You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.4 KiB
79 lines
2.4 KiB
2 months ago
|
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||
|
list(INSERT CMAKE_PREFIX_PATH 0 "/tmp/test/lib/cmake/mylib")
|
||
|
list(INSERT CMAKE_PREFIX_PATH 0 "/tmp/test/lib/cmake/kut")
|
||
|
cmake_minimum_required(VERSION 3.23)
|
||
|
project(mylib VERSION 2.0)
|
||
|
include(GNUInstallDirs)
|
||
|
include(CMakePackageConfigHelpers)
|
||
|
|
||
|
set(CMAKE_CXX_STANDARD 17)
|
||
|
set(CMAKE_BUILD_TYPE Release)
|
||
|
|
||
|
find_package(sodium REQUIRED)
|
||
|
find_package(kut 2.0 REQUIRED)
|
||
|
message(STATUS "sodium: ${sodium_VERSION_STRING}")
|
||
|
|
||
|
add_library(mylib STATIC)
|
||
|
target_sources(mylib
|
||
|
PUBLIC
|
||
|
FILE_SET HEADERS
|
||
|
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}
|
||
|
FILES
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/test_library.h
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/test_internal.h
|
||
|
PRIVATE
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/test_library.cpp
|
||
|
${CMAKE_CURRENT_SOURCE_DIR}/test_internal.cpp
|
||
|
)
|
||
|
|
||
|
target_link_libraries(mylib PUBLIC
|
||
|
sodium
|
||
|
kut::kut)
|
||
|
|
||
|
target_include_directories(mylib
|
||
|
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||
|
PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||
|
)
|
||
|
|
||
|
install(TARGETS mylib EXPORT mylibTargets
|
||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}/mylib/
|
||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/mylib/
|
||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/mylib/
|
||
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mylib/
|
||
|
FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mylib/)
|
||
|
|
||
|
|
||
|
#
|
||
|
# CMake package export/install
|
||
|
#
|
||
|
|
||
|
install(EXPORT mylibTargets
|
||
|
FILE mylibTargets.cmake
|
||
|
NAMESPACE mylib::
|
||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/mylib
|
||
|
)
|
||
|
|
||
|
# copy cmake Find*.cmake files to CMake's to-be-installed module folder
|
||
|
# @TODO: only do this once
|
||
|
install(DIRECTORY "${CMAKE_SOURCE_DIR}/cmake/"
|
||
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/mylib/modules"
|
||
|
FILES_MATCHING PATTERN "Find*.cmake")
|
||
|
|
||
|
# write CMake package config
|
||
|
configure_package_config_file(${CMAKE_SOURCE_DIR}/cmake/package.cmake.in
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/mylibConfig.cmake"
|
||
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/mylib)
|
||
|
|
||
|
# write CMake package version config
|
||
|
write_basic_package_version_file(
|
||
|
mylibConfigVersion.cmake
|
||
|
VERSION ${PACKAGE_VERSION}
|
||
|
COMPATIBILITY AnyNewerVersion)
|
||
|
|
||
|
# install CMake package configs
|
||
|
install(FILES
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/mylibConfig.cmake"
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/mylibConfigVersion.cmake"
|
||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/mylib)
|
||
|
|