CMakeLists.txt 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. cmake_minimum_required(VERSION 3.24)
  2. project(cxx_modules_library NONE)
  3. set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "ac01f462-0f5f-432a-86aa-acef252918a6")
  4. find_package(export_bmi_and_interfaces REQUIRED)
  5. if (NOT TARGET CXXModules::export_bmi_and_interfaces)
  6. message(FATAL_ERROR
  7. "Missing imported target")
  8. endif ()
  9. get_property(file_sets TARGET CXXModules::export_bmi_and_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_bmi_and_interfaces:\n ${file_sets}")
  14. endif ()
  15. get_property(file_set_files TARGET CXXModules::export_bmi_and_interfaces
  16. PROPERTY CXX_MODULE_SET_modules)
  17. set(expected_file_set_files
  18. "${expected_source_dir}/importable.cxx"
  19. "${expected_source_dir}/subdir/importable.cxx"
  20. )
  21. if (NOT file_set_files STREQUAL "${expected_file_set_files}")
  22. message(FATAL_ERROR
  23. "Incorrect exported file set paths in CXXModules::export_bmi_and_interfaces:\n ${file_set_files}")
  24. endif ()
  25. get_property(imported_modules TARGET CXXModules::export_bmi_and_interfaces
  26. PROPERTY IMPORTED_CXX_MODULES_DEBUG)
  27. set(expected_imported_modules
  28. "importable=${expected_source_dir}/importable.cxx,${expected_binary_dir}/CMakeFiles/export_bmi_and_interfaces.dir(/Debug)?/importable.(gcm|pcm|ifc)"
  29. "subdir_importable=${expected_source_dir}/subdir/importable.cxx,${expected_binary_dir}/CMakeFiles/export_bmi_and_interfaces.dir(/Debug)?/subdir_importable.(gcm|pcm|ifc)"
  30. )
  31. if (NOT imported_modules MATCHES "^${expected_imported_modules}$")
  32. message(FATAL_ERROR
  33. "Incorrect exported modules in CXXModules::export_bmi_and_interfaces:\n"
  34. " ${imported_modules}\n"
  35. "does not match:\n"
  36. " ${expected_imported_modules}"
  37. )
  38. endif ()