CMakeLists.txt 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. cmake_minimum_required(VERSION 3.24)
  2. project(cxx_modules_library NONE)
  3. find_package(export_interfaces REQUIRED)
  4. if (NOT TARGET CXXModules::export_interfaces)
  5. message(FATAL_ERROR
  6. "Missing imported target")
  7. endif ()
  8. get_property(file_sets TARGET CXXModules::export_interfaces
  9. PROPERTY INTERFACE_CXX_MODULE_SETS)
  10. if (NOT file_sets STREQUAL "modules")
  11. message(FATAL_ERROR
  12. "Incorrect exported file sets in CXXModules::export_interfaces:\n ${file_sets}")
  13. endif ()
  14. get_property(file_set_files TARGET CXXModules::export_interfaces
  15. PROPERTY CXX_MODULE_SET_modules)
  16. set(expected_file_set_files
  17. "${expected_source_dir}/importable.cxx"
  18. "${expected_source_dir}/subdir/importable.cxx"
  19. )
  20. if (NOT file_set_files STREQUAL "${expected_file_set_files}")
  21. message(FATAL_ERROR
  22. "Incorrect exported file set paths in CXXModules::export_interfaces:\n ${file_set_files}")
  23. endif ()
  24. get_property(imported_modules TARGET CXXModules::export_interfaces
  25. PROPERTY IMPORTED_CXX_MODULES_DEBUG)
  26. set(expected_imported_modules
  27. "importable=${expected_source_dir}/importable.cxx"
  28. "subdir_importable=${expected_source_dir}/subdir/importable.cxx"
  29. )
  30. if (NOT imported_modules STREQUAL "${expected_imported_modules}")
  31. message(FATAL_ERROR
  32. "Incorrect exported modules in CXXModules::export_interfaces:\n"
  33. " ${imported_modules}\n"
  34. "does not match:\n"
  35. " ${expected_imported_modules}"
  36. )
  37. endif ()