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]