From 8f903b9741774641b684728830ad63067c86711e Mon Sep 17 00:00:00 2001 From: myd7349 Date: Sat, 14 Dec 2019 15:36:01 +0800 Subject: [PATCH] Improve CMakeLists.txt - Fix headers installation; - Handle Threads dependency automatically; --- CMakeLists.txt | 21 +++++++++++++++++---- indicaConfig.cmake.in | 9 +++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 indicaConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index fb6d040..d71d933 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,11 @@ cmake_minimum_required(VERSION 3.8) project(indica VERSION 1.0.0 LANGUAGES CXX) option(INDICA_BUILD_TESTS OFF) +include(CMakePackageConfigHelpers) include(GNUInstallDirs) +find_package(Threads REQUIRED) + add_library(indica INTERFACE) add_library(indica::indica ALIAS indica) @@ -11,10 +14,20 @@ target_compile_features(indica INTERFACE cxx_std_11) target_include_directories(indica INTERFACE $ $) +target_link_libraries(indica INTERFACE Threads::Threads) -install(TARGETS indica EXPORT indicaConfig) -install(EXPORT indicaConfig +configure_package_config_file(indicaConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/indicaConfig.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/indica) + +install(TARGETS indica EXPORT indicaTargets) +install(EXPORT indicaTargets + FILE indicaTargets.cmake NAMESPACE indica:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/indica) -install(FILES ${CMAKE_CURRENT_LIST_DIR}/include/indica.hpp - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/indica) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicaConfig.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/indica) +install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/include/indicators + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + USE_SOURCE_PERMISSIONS + PATTERN "*.hpp") diff --git a/indicaConfig.cmake.in b/indicaConfig.cmake.in new file mode 100644 index 0000000..776c8b2 --- /dev/null +++ b/indicaConfig.cmake.in @@ -0,0 +1,9 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) + +find_dependency(Threads) + +if (NOT TARGET indica::indica) + include(${CMAKE_CURRENT_LIST_DIR}/indicaTargets.cmake) +endif ()