Imported Upstream version 3.25.0
[platform/upstream/cmake.git] / Tests / RunCMake / CXXModules / examples / export-interface-build / 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 export(EXPORT CXXModules
28   NAMESPACE CXXModules::
29   FILE "${CMAKE_CURRENT_BINARY_DIR}/export_interfaces-targets.cmake")
30 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/export_interfaces-config.cmake"
31   "include(\"\${CMAKE_CURRENT_LIST_DIR}/export_interfaces-targets.cmake\")
32 set(\${CMAKE_FIND_PACKAGE_NAME}_FOUND 1)
33 ")
34
35 set(generator
36   -G "${CMAKE_GENERATOR}")
37 if (CMAKE_GENERATOR_TOOLSET)
38   list(APPEND generator
39     -T "${CMAKE_GENERATOR_TOOLSET}")
40 endif ()
41 if (CMAKE_GENERATOR_PLATFORM)
42   list(APPEND generator
43     -A "${CMAKE_GENERATOR_PLATFORM}")
44 endif ()
45
46 add_test(NAME export_interfaces_build
47   COMMAND
48     "${CMAKE_COMMAND}"
49     "-Dexpected_dir=${CMAKE_CURRENT_SOURCE_DIR}"
50     "-Dexport_interfaces_DIR=${CMAKE_CURRENT_BINARY_DIR}"
51     ${generator}
52     -S "${CMAKE_CURRENT_SOURCE_DIR}/test"
53     -B "${CMAKE_CURRENT_BINARY_DIR}/test")