summaryrefslogtreecommitdiff
path: root/Tests/Tutorial/Consumer/CMakeLists.txt
blob: 4033b4da8340f860c06e874e846ea0729d5959c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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"
)