Imported Upstream version 3.25.0
[platform/upstream/cmake.git] / Tests / RunCMake / CXXModules / examples / deep-chain / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.24)
2 project(cxx_modules_deep_chain CXX)
3
4 include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake")
5
6 add_library(a STATIC)
7 target_sources(a
8   PUBLIC
9     FILE_SET CXX_MODULES
10       BASE_DIRS
11         "${CMAKE_CURRENT_SOURCE_DIR}"
12       FILES
13         a.cxx)
14 target_compile_features(a PUBLIC cxx_std_20)
15
16 add_library(b STATIC)
17 target_sources(b
18   PUBLIC
19     FILE_SET CXX_MODULES
20       BASE_DIRS
21         "${CMAKE_CURRENT_SOURCE_DIR}"
22       FILES
23         b.cxx)
24 target_compile_features(b PUBLIC cxx_std_20)
25 target_link_libraries(b PUBLIC a)
26
27 add_library(c STATIC)
28 target_sources(c
29   PUBLIC
30     FILE_SET CXX_MODULES
31       BASE_DIRS
32         "${CMAKE_CURRENT_SOURCE_DIR}"
33       FILES
34         c.cxx)
35 target_compile_features(c PUBLIC cxx_std_20)
36 target_link_libraries(c PUBLIC b)
37
38 add_library(d STATIC)
39 target_sources(d
40   PUBLIC
41     FILE_SET CXX_MODULES
42       BASE_DIRS
43         "${CMAKE_CURRENT_SOURCE_DIR}"
44       FILES
45         d.cxx)
46 target_compile_features(d PUBLIC cxx_std_20)
47 target_link_libraries(d PUBLIC c)
48
49 add_library(e STATIC)
50 target_sources(e
51   PUBLIC
52     FILE_SET CXX_MODULES
53       BASE_DIRS
54         "${CMAKE_CURRENT_SOURCE_DIR}"
55       FILES
56         e.cxx)
57 target_compile_features(e PUBLIC cxx_std_20)
58 target_link_libraries(e PUBLIC d)
59
60 add_executable(exe)
61 target_link_libraries(exe PRIVATE e)
62 target_sources(exe
63   PRIVATE
64     main.cxx)
65
66 add_test(NAME exe COMMAND exe)