From 9f131cfb5db87e76cc575d7c0aa1e06d84465e6b Mon Sep 17 00:00:00 2001 From: Castor216 Date: Wed, 17 Jan 2024 17:52:58 +0000 Subject: [PATCH] oaknut: add configuration for standalone installation --- CMakeLists.txt | 30 ++++++++++++++++++++++++++---- oaknutConfig.cmake.in | 5 +++++ 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 oaknutConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 7921796..6e8ec74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ project(oaknut LANGUAGES CXX VERSION 1.2.2) # or if this is the master project. set(MASTER_PROJECT OFF) if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) - set(MASTER_PROJECT ON) + set(MASTER_PROJECT ON) endif() # Disable in-source builds @@ -41,11 +41,16 @@ set(header_files ${CMAKE_CURRENT_SOURCE_DIR}/include/oaknut/oaknut_exception.hpp ) +include(GNUInstallDirs) + # Library definition add_library(oaknut INTERFACE) add_library(merry::oaknut ALIAS oaknut) target_sources(oaknut INTERFACE "$") -target_include_directories(oaknut INTERFACE $) +target_include_directories(oaknut INTERFACE + $ + $ +) target_compile_features(oaknut INTERFACE cxx_std_20) # Tests @@ -97,11 +102,28 @@ if (MASTER_PROJECT) endif() endif() -# Export -include(GNUInstallDirs) +# Install +include(CMakePackageConfigHelpers) install(TARGETS oaknut EXPORT oaknutTargets) install(EXPORT oaknutTargets NAMESPACE merry:: DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/oaknut" ) + +configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/oaknutConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/oaknutConfig.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/oaknut" +) +write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/oaknutConfigVersion.cmake" + COMPATIBILITY SameMajorVersion +) +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/oaknutConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/oaknutConfigVersion.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/oaknut" +) +install(DIRECTORY + "${CMAKE_CURRENT_SOURCE_DIR}/include/oaknut" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" +) diff --git a/oaknutConfig.cmake.in b/oaknutConfig.cmake.in new file mode 100644 index 0000000..8c9ad12 --- /dev/null +++ b/oaknutConfig.cmake.in @@ -0,0 +1,5 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") + +check_required_components(@PROJECT_NAME@)