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

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)