CMakeLists.txt 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. cmake_minimum_required(VERSION 3.24)
  2. project(cxx_modules_deep_chain CXX)
  3. include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake")
  4. add_library(a STATIC)
  5. target_sources(a
  6. PUBLIC
  7. FILE_SET CXX_MODULES
  8. BASE_DIRS
  9. "${CMAKE_CURRENT_SOURCE_DIR}"
  10. FILES
  11. a.cxx)
  12. target_compile_features(a PUBLIC cxx_std_20)
  13. add_library(b STATIC)
  14. target_sources(b
  15. PUBLIC
  16. FILE_SET CXX_MODULES
  17. BASE_DIRS
  18. "${CMAKE_CURRENT_SOURCE_DIR}"
  19. FILES
  20. b.cxx)
  21. target_compile_features(b PUBLIC cxx_std_20)
  22. target_link_libraries(b PUBLIC a)
  23. add_library(c STATIC)
  24. target_sources(c
  25. PUBLIC
  26. FILE_SET CXX_MODULES
  27. BASE_DIRS
  28. "${CMAKE_CURRENT_SOURCE_DIR}"
  29. FILES
  30. c.cxx)
  31. target_compile_features(c PUBLIC cxx_std_20)
  32. target_link_libraries(c PUBLIC b)
  33. add_library(d STATIC)
  34. target_sources(d
  35. PUBLIC
  36. FILE_SET CXX_MODULES
  37. BASE_DIRS
  38. "${CMAKE_CURRENT_SOURCE_DIR}"
  39. FILES
  40. d.cxx)
  41. target_compile_features(d PUBLIC cxx_std_20)
  42. target_link_libraries(d PUBLIC c)
  43. add_library(e STATIC)
  44. target_sources(e
  45. PUBLIC
  46. FILE_SET CXX_MODULES
  47. BASE_DIRS
  48. "${CMAKE_CURRENT_SOURCE_DIR}"
  49. FILES
  50. e.cxx)
  51. target_compile_features(e PUBLIC cxx_std_20)
  52. target_link_libraries(e PUBLIC d)
  53. add_executable(exe)
  54. target_link_libraries(exe PRIVATE e)
  55. target_sources(exe
  56. PRIVATE
  57. main.cxx)
  58. add_test(NAME exe COMMAND exe)