CMakeLists.txt 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. cmake_minimum_required(VERSION 3.24)
  2. project(cxx_modules_library NONE)
  3. set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "9629ab6c-6c0e-423f-bb9d-cc5ac4a22041")
  4. find_package(export_interfaces REQUIRED)
  5. if (NOT TARGET CXXModules::export_interfaces)
  6. message(FATAL_ERROR
  7. "Missing imported target")
  8. endif ()
  9. get_property(file_sets TARGET CXXModules::export_interfaces
  10. PROPERTY INTERFACE_CXX_MODULE_SETS)
  11. if (NOT file_sets STREQUAL "modules")
  12. message(FATAL_ERROR
  13. "Incorrect exported file sets in `CXXModules::export_interfaces`: `${file_sets}`")
  14. endif ()
  15. get_property(file_set_files TARGET CXXModules::export_interfaces
  16. PROPERTY CXX_MODULE_SET_modules)
  17. if (NOT file_set_files STREQUAL "${expected_dir}/importable.cxx")
  18. message(FATAL_ERROR
  19. "Incorrect exported file set paths in CXXModules::export_interfaces`: `${file_set_files}`")
  20. endif ()
  21. get_property(imported_modules_set TARGET CXXModules::export_interfaces
  22. PROPERTY IMPORTED_CXX_MODULES_DEBUG SET)
  23. if (imported_modules_set)
  24. message(FATAL_ERROR
  25. "Unexpected C++ modules specified.")
  26. endif ()