oaknut: add configuration for standalone installation

This commit is contained in:
Castor216 2024-01-17 17:52:58 +00:00 committed by merry
parent 69799b43c6
commit 9f131cfb5d
2 changed files with 31 additions and 4 deletions

View file

@ -41,11 +41,16 @@ set(header_files
${CMAKE_CURRENT_SOURCE_DIR}/include/oaknut/oaknut_exception.hpp ${CMAKE_CURRENT_SOURCE_DIR}/include/oaknut/oaknut_exception.hpp
) )
include(GNUInstallDirs)
# Library definition # Library definition
add_library(oaknut INTERFACE) add_library(oaknut INTERFACE)
add_library(merry::oaknut ALIAS oaknut) add_library(merry::oaknut ALIAS oaknut)
target_sources(oaknut INTERFACE "$<BUILD_INTERFACE:${header_files}>") target_sources(oaknut INTERFACE "$<BUILD_INTERFACE:${header_files}>")
target_include_directories(oaknut INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>) target_include_directories(oaknut INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_LIBDIR}>
)
target_compile_features(oaknut INTERFACE cxx_std_20) target_compile_features(oaknut INTERFACE cxx_std_20)
# Tests # Tests
@ -97,11 +102,28 @@ if (MASTER_PROJECT)
endif() endif()
endif() endif()
# Export # Install
include(GNUInstallDirs) include(CMakePackageConfigHelpers)
install(TARGETS oaknut EXPORT oaknutTargets) install(TARGETS oaknut EXPORT oaknutTargets)
install(EXPORT oaknutTargets install(EXPORT oaknutTargets
NAMESPACE merry:: NAMESPACE merry::
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/oaknut" 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}"
)

5
oaknutConfig.cmake.in Normal file
View file

@ -0,0 +1,5 @@
@PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
check_required_components(@PROJECT_NAME@)