diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 99 |
1 files changed, 68 insertions, 31 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index bf4ab41..fbfb983 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,10 +2,13 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR) project(ntkernel-error-category VERSION 1.0 LANGUAGES CXX) enable_testing() -if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) - set(PROJECT_IS_DEPENDENCY OFF) -else() - set(PROJECT_IS_DEPENDENCY ON) +include(GNUInstallDirs) +if(NOT DEFINED PROJECT_IS_DEPENDENCY) + if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) + set(PROJECT_IS_DEPENDENCY OFF) + else() + set(PROJECT_IS_DEPENDENCY ON) + endif() endif() if(WIN32) @@ -18,65 +21,99 @@ if(WIN32) ) endif() -add_library(ntkernel-error-category_dl SHARED "src/ntkernel_category.cpp") -target_compile_features(ntkernel-error-category_dl PUBLIC cxx_std_11) -target_include_directories(ntkernel-error-category_dl INTERFACE "include") -set_target_properties(ntkernel-error-category_dl PROPERTIES +install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/ntkernel-error-category" + DESTINATION "include" +) + +add_library(${PROJECT_NAME}_dl SHARED "src/ntkernel_category.cpp") +target_compile_features(${PROJECT_NAME}_dl PUBLIC cxx_std_11) +target_include_directories(${PROJECT_NAME}_dl PUBLIC + "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>" + "$<INSTALL_INTERFACE:include>" +) +set_target_properties(${PROJECT_NAME}_dl PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" ) -add_library(ntkernel-error-category::dl ALIAS ntkernel-error-category_dl) -install(FILES ntkernel-error-category_dl} - DESTINATION "lib" +add_library(${PROJECT_NAME}::dl ALIAS ${PROJECT_NAME}_dl) +install(TARGETS ${PROJECT_NAME}_dl + EXPORT ${PROJECT_NAME}Exports + INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" ) -add_library(ntkernel-error-category_sl STATIC "src/ntkernel_category.cpp") -target_compile_features(ntkernel-error-category_sl PUBLIC cxx_std_11) -target_include_directories(ntkernel-error-category_sl INTERFACE "include") -target_compile_definitions(ntkernel-error-category_sl PRIVATE NTKERNEL_ERROR_CATEGORY_STATIC) -set_target_properties(ntkernel-error-category_sl PROPERTIES +add_library(${PROJECT_NAME}_sl STATIC "src/ntkernel_category.cpp") +target_compile_features(${PROJECT_NAME}_sl PUBLIC cxx_std_11) +target_include_directories(${PROJECT_NAME}_sl PUBLIC + "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>" + "$<INSTALL_INTERFACE:include>" +) +target_compile_definitions(${PROJECT_NAME}_sl PRIVATE NTKERNEL_ERROR_CATEGORY_STATIC) +set_target_properties(${PROJECT_NAME}_sl PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" ) -add_library(ntkernel-error-category::sl ALIAS ntkernel-error-category_sl) -install(FILES ntkernel-error-category_sl} - DESTINATION "lib" +add_library(${PROJECT_NAME}::sl ALIAS ${PROJECT_NAME}_sl) +install(TARGETS ${PROJECT_NAME}_sl + EXPORT ${PROJECT_NAME}Exports + INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" ) -add_library(ntkernel-error-category_hl INTERFACE) -target_compile_features(ntkernel-error-category_hl INTERFACE cxx_std_11) -target_include_directories(ntkernel-error-category_hl INTERFACE "include") -target_compile_definitions(ntkernel-error-category_hl INTERFACE +add_library(${PROJECT_NAME}_hl INTERFACE) +target_compile_features(${PROJECT_NAME}_hl INTERFACE cxx_std_11) +target_include_directories(${PROJECT_NAME}_hl INTERFACE + "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>" + "$<INSTALL_INTERFACE:include>" +) +target_compile_definitions(${PROJECT_NAME}_hl INTERFACE NTKERNEL_ERROR_CATEGORY_INLINE NTKERNEL_ERROR_CATEGORY_STATIC ) -add_library(ntkernel-error-category::hl ALIAS ntkernel-error-category_hl) +add_library(${PROJECT_NAME}::hl ALIAS ${PROJECT_NAME}_hl) +install(TARGETS ${PROJECT_NAME}_hl + EXPORT ${PROJECT_NAME}Exports + INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" +) -export( - TARGETS ntkernel-error-category_dl ntkernel-error-category_sl ntkernel-error-category_hl - FILE "NtKernelErrorCategoryTargets.cmake" - EXPORT_LINK_INTERFACE_LIBRARIES +configure_file( + "${CMAKE_CURRENT_LIST_DIR}/ProjectConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + @ONLY +) +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" +) +install(EXPORT ${PROJECT_NAME}Exports + NAMESPACE ${PROJECT_NAME}:: + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" ) +configure_file( + "${CMAKE_CURRENT_LIST_DIR}/FixupInstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}FixupInstall.cmake" + @ONLY +) +install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}FixupInstall.cmake") + if(NOT PROJECT_IS_DEPENDENCY) add_executable(test-dl "test/main.cpp") - target_link_libraries(test-dl PRIVATE ntkernel-error-category::dl) + target_link_libraries(test-dl PRIVATE ${PROJECT_NAME}::dl) set_target_properties(test-dl PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" ) add_test(NAME test-dl COMMAND $<TARGET_FILE:test-dl>) add_executable(test-sl "test/main.cpp") - target_link_libraries(test-sl PRIVATE ntkernel-error-category::sl) + target_link_libraries(test-sl PRIVATE ${PROJECT_NAME}::sl) set_target_properties(test-sl PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" ) add_test(NAME test-sl COMMAND $<TARGET_FILE:test-sl>) add_executable(test-hl "test/main.cpp") - target_link_libraries(test-hl PRIVATE ntkernel-error-category::hl) + target_link_libraries(test-hl PRIVATE ${PROJECT_NAME}::hl) set_target_properties(test-hl PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" ) |