cmake_minimum_required(VERSION 3.3) if(NOT DEFINED CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED True) endif() function(find_external_dependency name) set(${name}_ROOT "" CACHE PATH "Root directory to find ${name}") mark_as_advanced(${name}_DIR) find_package(${name} PATHS ${${name}_ROOT} REQUIRED) endfunction() project(Consumer) find_external_dependency(MathFunctions) add_library(consumer consumer.cxx) target_link_libraries(consumer PUBLIC MathFunctions) # install the consumer library install(TARGETS consumer DESTINATION bin EXPORT ConsumerTargets) # install the configuration targets install(EXPORT ConsumerTargets FILE ConsumerTargets.cmake DESTINATION lib/cmake/Consumer ) include(CMakePackageConfigHelpers) # generate the config file that is includes the exports configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/ConsumerConfig.cmake" INSTALL_DESTINATION "lib/cmake/example" NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO ) # install the configuration file install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ConsumerConfig.cmake DESTINATION lib/cmake/Consumer ) # generate the export targets for the build tree # needs to be after the install(TARGETS ) command export(EXPORT ConsumerTargets FILE "${CMAKE_CURRENT_BINARY_DIR}/ConsumerTargets.cmake" )