Imported Upstream version 3.25.0
[platform/upstream/cmake.git] / Tests / RunCMake / CXXModules / examples / export-interface-install / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.24)
2 project(cxx_modules_export_interfaces CXX)
3
4 include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake")
5
6 add_library(export_interfaces STATIC)
7 target_sources(export_interfaces
8   PRIVATE
9     forward.cxx
10   PRIVATE
11     FILE_SET modules_private TYPE CXX_MODULES
12       BASE_DIRS
13         "${CMAKE_CURRENT_SOURCE_DIR}"
14       FILES
15         private.cxx
16   PUBLIC
17     FILE_SET modules TYPE CXX_MODULES
18       BASE_DIRS
19         "${CMAKE_CURRENT_SOURCE_DIR}"
20       FILES
21         importable.cxx)
22 target_compile_features(export_interfaces PUBLIC cxx_std_20)
23
24 install(TARGETS export_interfaces
25   EXPORT CXXModules
26   FILE_SET modules DESTINATION "lib/cxx/miu")
27 install(EXPORT CXXModules
28   NAMESPACE CXXModules::
29   DESTINATION "lib/cmake/export_interfaces"
30   FILE "export_interfaces-targets.cmake")
31 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/export_interfaces-config.cmake"
32   "include(\"\${CMAKE_CURRENT_LIST_DIR}/export_interfaces-targets.cmake\")
33 set(\${CMAKE_FIND_PACKAGE_NAME}_FOUND 1)
34 ")
35 install(FILES "${CMAKE_CURRENT_BINARY_DIR}/export_interfaces-config.cmake"
36   DESTINATION "lib/cmake/export_interfaces")
37
38 set(generator
39   -G "${CMAKE_GENERATOR}")
40 if (CMAKE_GENERATOR_TOOLSET)
41   list(APPEND generator
42     -T "${CMAKE_GENERATOR_TOOLSET}")
43 endif ()
44 if (CMAKE_GENERATOR_PLATFORM)
45   list(APPEND generator
46     -A "${CMAKE_GENERATOR_PLATFORM}")
47 endif ()
48
49 add_test(NAME export_interfaces_build
50   COMMAND
51     "${CMAKE_COMMAND}"
52     "-Dexpected_dir=${CMAKE_INSTALL_PREFIX}/lib/cxx/miu"
53     "-Dexport_interfaces_DIR=${CMAKE_INSTALL_PREFIX}/lib/cmake/export_interfaces"
54     ${generator}
55     -S "${CMAKE_CURRENT_SOURCE_DIR}/test"
56     -B "${CMAKE_CURRENT_BINARY_DIR}/test")