|
| 1 | +cmake_minimum_required(VERSION 3.5) |
| 2 | +project(foo LANGUAGES CXX VERSION 0.0.1) |
| 3 | + |
| 4 | +# The example library publicly dependent on RapidFuzz (includes |
| 5 | +# rapidfuzz.hpp in foo_lib.hpp), necessitating RapidFuzz's installation |
| 6 | +set(RAPIDFUZZ_INSTALL ON CACHE INTERNAL "") |
| 7 | +add_subdirectory(${CMAKE_SOURCE_DIR}/../.. |
| 8 | + ${CMAKE_SOURCE_DIR}/../../build) |
| 9 | + |
| 10 | +add_library(foo foo_lib.cc) |
| 11 | +add_library(foo::foo ALIAS foo) |
| 12 | +target_link_libraries(foo rapidfuzz) |
| 13 | + |
| 14 | +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") |
| 15 | +include(GNUInstallDirs) |
| 16 | +include(CMakePackageConfigHelpers) |
| 17 | + |
| 18 | +set(FOO_CMAKE_CONFIG_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/foo") |
| 19 | +install(TARGETS foo EXPORT fooTargs DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 20 | +install(EXPORT fooTargs NAMESPACE foo:: DESTINATION ${FOO_CMAKE_CONFIG_DESTINATION}) |
| 21 | + |
| 22 | +configure_package_config_file( |
| 23 | + ${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}Config.cmake.in |
| 24 | + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake |
| 25 | + INSTALL_DESTINATION ${FOO_CMAKE_CONFIG_DESTINATION} |
| 26 | +) |
| 27 | +write_basic_package_version_file( |
| 28 | + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" |
| 29 | + COMPATIBILITY SameMajorVersion |
| 30 | +) |
| 31 | + |
| 32 | +install( |
| 33 | + FILES |
| 34 | + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" |
| 35 | + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" |
| 36 | + DESTINATION |
| 37 | + ${FOO_CMAKE_CONFIG_DESTINATION} |
| 38 | +) |
| 39 | +install(FILES foo_lib.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
0 commit comments