cmake_minimum_required(VERSION 3.24) project(cxx_modules_library NONE) set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "3c375311-a3c9-4396-a187-3227ef642046") find_package(export_interfaces REQUIRED) if (NOT TARGET CXXModules::export_interfaces) message(FATAL_ERROR "Missing imported target") endif () get_property(file_sets TARGET CXXModules::export_interfaces PROPERTY INTERFACE_CXX_MODULE_SETS) if (NOT file_sets STREQUAL "modules") message(FATAL_ERROR "Incorrect exported file sets in `CXXModules::export_interfaces`: `${file_sets}`") endif () get_property(file_set_files TARGET CXXModules::export_interfaces PROPERTY CXX_MODULE_SET_modules) if (NOT file_set_files STREQUAL "${expected_dir}/importable.cxx") message(FATAL_ERROR "Incorrect exported file set paths in CXXModules::export_interfaces`: `${file_set_files}`") endif () get_property(imported_modules_set TARGET CXXModules::export_interfaces PROPERTY IMPORTED_CXX_MODULES_DEBUG SET) if (imported_modules_set) message(FATAL_ERROR "Unexpected C++ modules specified.") endif ()