Tests/CXXModules: test Visual Studio synthetic target error

This commit is contained in:
Ben Boeckel 2023-10-17 10:26:33 -04:00
parent badb6ab120
commit 17fd7fe2ae
6 changed files with 47 additions and 1 deletions

View File

@ -95,7 +95,7 @@ if (RunCMake_GENERATOR MATCHES "Ninja")
run_cmake(NinjaDependInfoExport)
run_cmake(NinjaDependInfoBMIInstall)
elseif (RunCMake_GENERATOR MATCHES "Visual Studio")
# Not supported yet.
run_cmake(VisualStudioNoSyntheticTargets)
else ()
message(FATAL_ERROR
"Please add 'DependInfo' tests for the '${RunCMake_GENERATOR}' generator.")

View File

@ -0,0 +1,6 @@
^(CMake Error in CMakeLists.txt:
Target "imported-cxx-modules@synth_[0-9a-f]+" contains C\+\+ modules
intended for BMI-only compilation. This is not yet supported by the Visual
Studio generator.
*
)+CMake Generate step failed. Build files cannot be regenerated correctly.

View File

@ -0,0 +1,27 @@
enable_language(CXX)
if (NOT CMAKE_GENERATOR MATCHES "Visual Studio")
message(FATAL_ERROR
"This test requires a 'Visual Studio' generator to be used.")
endif ()
add_library(imported-cxx-modules IMPORTED INTERFACE)
target_sources(imported-cxx-modules
INTERFACE
FILE_SET modules TYPE CXX_MODULES
BASE_DIRS
"${CMAKE_CURRENT_SOURCE_DIR}/sources"
FILES
sources/module-simple.cxx)
set_target_properties(imported-cxx-modules PROPERTIES
IMPORTED_CONFIGURATIONS DEBUG
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
IMPORTED_CXX_MODULES_COMPILE_FEATURES "cxx_std_20"
INTERFACE_COMPILE_FEATURES "cxx_std_20"
IMPORTED_CXX_MODULES_DEBUG "simple=${CMAKE_CURRENT_SOURCE_DIR}/sources/module-simple.cxx")
add_executable(vs-use-imported-cxx-modules
sources/module-simple-use.cxx)
target_link_libraries(vs-use-imported-cxx-modules
PRIVATE
imported-cxx-modules)

View File

@ -0,0 +1,6 @@
import simple;
int main(int argc, char* argv[])
{
return g();
}

View File

@ -0,0 +1,6 @@
export module simple;
int g()
{
return 0;
}