From b51ffa904a25e62f68e093a94cdc87abf9eda583 Mon Sep 17 00:00:00 2001 From: llm96 Date: Thu, 20 Feb 2025 20:03:10 +0000 Subject: [PATCH] Add CMake installation rules Co-authored-by: aixxe --- CMakeLists.txt | 32 +++++++++++++++++++++++++++++++- cmake.toml | 31 ++++++++++++++++++++++++++++++- 2 files changed, 61 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c4e8bb..cbbe4d9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,8 @@ if(SAFETYHOOK_BUILD_TEST) # build-test v2.0.1 GIT_SHALLOW ON + EXCLUDE_FROM_ALL + ON ) FetchContent_MakeAvailable(ut) @@ -58,6 +60,8 @@ if(SAFETYHOOK_BUILD_TEST) # build-test v6.69 GIT_SHALLOW ON + EXCLUDE_FROM_ALL + ON ) FetchContent_MakeAvailable(xbyak) @@ -75,6 +79,8 @@ if(SAFETYHOOK_FETCH_ZYDIS) # fetch-zydis v4.1.0 GIT_SHALLOW ON + EXCLUDE_FROM_ALL + ON ) FetchContent_MakeAvailable(Zydis) @@ -159,7 +165,8 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "GNU") # endif() target_include_directories(safetyhook PUBLIC - "include/" + "$" + "$" ) target_link_libraries(safetyhook PUBLIC @@ -171,6 +178,29 @@ if(SAFETYHOOK_USE_CXXMODULES) target_compile_definitions(safetyhook INTERFACE SAFETYHOOK_USE_CXXMODULES) endif() +include(GNUInstallDirs) + +install( + TARGETS safetyhook + EXPORT safetyhook-export + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) + +install( + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) + +install( + EXPORT safetyhook-export + FILE safetyhook-config.cmake + NAMESPACE safetyhook:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/safetyhook +) + # Target: docs if(SAFETYHOOK_BUILD_DOCS) # build-docs set(CMKR_TARGET docs) diff --git a/cmake.toml b/cmake.toml index f51f6bd..04645b8 100644 --- a/cmake.toml +++ b/cmake.toml @@ -26,12 +26,14 @@ condition = "build-test" git = "https://github.com/boost-ext/ut.git" tag = "v2.0.1" shallow = true +EXCLUDE_FROM_ALL = true [fetch-content.xbyak] condition = "build-test" git = "https://github.com/herumi/xbyak.git" tag = "v6.69" shallow = true +EXCLUDE_FROM_ALL = true [fetch-content.Zydis] condition = "fetch-zydis" @@ -46,6 +48,7 @@ option(ZYDIS_BUILD_DOXYGEN "" OFF) cmake-after = """ add_library(Zydis::Zydis ALIAS Zydis) """ +EXCLUDE_FROM_ALL = true [find-package.Doxygen] condition = "build-docs" @@ -63,7 +66,10 @@ required = true [target.safetyhook] type = "library" sources = ["src/*.cpp"] -include-directories = ["include/"] +include-directories = [ + "$", + "$" +] compile-features = ["cxx_std_23"] alias = "safetyhook::safetyhook" link-libraries = ["Zydis::Zydis"] @@ -76,6 +82,29 @@ cmake-after = """ if(SAFETYHOOK_USE_CXXMODULES) target_compile_definitions(safetyhook INTERFACE SAFETYHOOK_USE_CXXMODULES) endif() + +include(GNUInstallDirs) + +install( + TARGETS safetyhook + EXPORT safetyhook-export + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) + +install( + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) + +install( + EXPORT safetyhook-export + FILE safetyhook-config.cmake + NAMESPACE safetyhook:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/safetyhook +) """ [target.docs]