From cbd549b09e7f8c0baa8142eda221e686b132f2a4 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 28 Nov 2023 12:15:07 -0500 Subject: cxxmodules: Add more suggestions to no-modules-support diagnostics Tell users what generators *do* support C++ modules. Report the current generator to make clear it is not one of those supporting modules. Also clarify the purpose of the existing documentation references. --- Source/cmGeneratorTarget.cxx | 19 ++++++++++++------- Tests/RunCMake/CXXModules/NoCXX-stderr.txt | 11 +++++++++-- Tests/RunCMake/CXXModules/NoCXX20-stderr.txt | 11 +++++++++-- Tests/RunCMake/CXXModules/NoDyndepSupport-stderr.txt | 11 +++++++++-- .../NoScanningSourceFileProperty-stderr.txt | 15 +++++++++++---- .../CXXModules/NoScanningTargetProperty-stderr.txt | 15 +++++++++++---- 6 files changed, 61 insertions(+), 21 deletions(-) diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 8d21e63..4b4d8b9 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -9227,11 +9227,15 @@ void cmGeneratorTarget::CheckCxxModuleStatus(std::string const& config) const cmGlobalGenerator::CxxModuleSupportQuery::Expected)) { this->Makefile->IssueMessage( MessageType::FATAL_ERROR, - cmStrCat( - "The target named \"", this->GetName(), - "\" has C++ sources that may use modules, but modules are not " - "supported by this generator. See the cmake-cxxmodules(7) manual " - "and the CMAKE_CXX_SCAN_FOR_MODULES variable.")); + cmStrCat("The target named \"", this->GetName(), + "\" has C++ sources that may use modules, but modules are not " + "supported by this generator:\n ", + this->GetGlobalGenerator()->GetName(), '\n', + "Modules are supported only by Ninja, Ninja Multi-Config, " + "and Visual Studio generators for VS 17.4 and newer. " + "See the cmake-cxxmodules(7) manual for details. " + "Use the CMAKE_CXX_SCAN_FOR_MODULES variable to enable or " + "disable scanning.")); return; } @@ -9266,8 +9270,9 @@ void cmGeneratorTarget::CheckCxxModuleStatus(std::string const& config) const cmStrCat("The target named \"", this->GetName(), "\" has C++ sources that may use modules, but the compiler " "does not provide a way to discover the import graph " - "dependencies. See the cmake-cxxmodules(7) manual " - "and the CMAKE_CXX_SCAN_FOR_MODULES variable.")); + "dependencies. See the cmake-cxxmodules(7) manual for " + "details. Use the CMAKE_CXX_SCAN_FOR_MODULES variable to " + "enable or disable scanning.")); } break; case cmGeneratorTarget::Cxx20SupportLevel::Supported: // All is well. diff --git a/Tests/RunCMake/CXXModules/NoCXX-stderr.txt b/Tests/RunCMake/CXXModules/NoCXX-stderr.txt index ba2715b..2ca67d6 100644 --- a/Tests/RunCMake/CXXModules/NoCXX-stderr.txt +++ b/Tests/RunCMake/CXXModules/NoCXX-stderr.txt @@ -3,8 +3,15 @@ language has not been enabled\. |CMake Error in CMakeLists.txt: The target named "nocxx" has C\+\+ sources that may use modules, but modules - are not supported by this generator\. See the cmake-cxxmodules\(7\) manual - and the CMAKE_CXX_SCAN_FOR_MODULES variable\. + are not supported by this generator: + + [^ +]+ + + Modules are supported only by Ninja, Ninja Multi-Config, and Visual Studio + generators for VS 17\.4 and newer\. See the cmake-cxxmodules\(7\) manual for + details\. Use the CMAKE_CXX_SCAN_FOR_MODULES variable to enable or disable + scanning\. |CMake Error in CMakeLists.txt: Target "nocxx" has source file diff --git a/Tests/RunCMake/CXXModules/NoCXX20-stderr.txt b/Tests/RunCMake/CXXModules/NoCXX20-stderr.txt index 3f3a547..16adba5 100644 --- a/Tests/RunCMake/CXXModules/NoCXX20-stderr.txt +++ b/Tests/RunCMake/CXXModules/NoCXX20-stderr.txt @@ -4,6 +4,13 @@ "cxx_std_17"\. |CMake Error in CMakeLists.txt: The target named "nocxx20" has C\+\+ sources that may use modules, but - modules are not supported by this generator\. See the cmake-cxxmodules\(7\) - manual and the CMAKE_CXX_SCAN_FOR_MODULES variable\. + modules are not supported by this generator: + + [^ +]+ + + Modules are supported only by Ninja, Ninja Multi-Config, and Visual Studio + generators for VS 17\.4 and newer\. See the cmake-cxxmodules\(7\) manual for + details\. Use the CMAKE_CXX_SCAN_FOR_MODULES variable to enable or disable + scanning\. ) diff --git a/Tests/RunCMake/CXXModules/NoDyndepSupport-stderr.txt b/Tests/RunCMake/CXXModules/NoDyndepSupport-stderr.txt index c7e2979..5452ddb 100644 --- a/Tests/RunCMake/CXXModules/NoDyndepSupport-stderr.txt +++ b/Tests/RunCMake/CXXModules/NoDyndepSupport-stderr.txt @@ -7,6 +7,13 @@ due to lack of required features\. Ninja 1\.11 or higher is required\. |CMake Error in CMakeLists.txt: The target named "nodyndep" has C\+\+ sources that may use modules, but - modules are not supported by this generator\. See the cmake-cxxmodules\(7\) - manual and the CMAKE_CXX_SCAN_FOR_MODULES variable\. + modules are not supported by this generator: + + [^ +]+ + + Modules are supported only by Ninja, Ninja Multi-Config, and Visual Studio + generators for VS 17\.4 and newer\. See the cmake-cxxmodules\(7\) manual for + details\. Use the CMAKE_CXX_SCAN_FOR_MODULES variable to enable or disable + scanning\. ) diff --git a/Tests/RunCMake/CXXModules/NoScanningSourceFileProperty-stderr.txt b/Tests/RunCMake/CXXModules/NoScanningSourceFileProperty-stderr.txt index ed78672..ce548b9 100644 --- a/Tests/RunCMake/CXXModules/NoScanningSourceFileProperty-stderr.txt +++ b/Tests/RunCMake/CXXModules/NoScanningSourceFileProperty-stderr.txt @@ -1,10 +1,17 @@ (CMake Error in CMakeLists.txt: The target named "noscanning-sf-property" has C\+\+ sources that may use modules, but the compiler does not provide a way to discover the import - graph dependencies\. See the cmake-cxxmodules\(7\) manual and the - CMAKE_CXX_SCAN_FOR_MODULES variable\. + graph dependencies\. See the cmake-cxxmodules\(7\) manual for details\. Use + the CMAKE_CXX_SCAN_FOR_MODULES variable to enable or disable scanning\. |CMake Error in CMakeLists.txt: The target named "noscanning-sf-property" has C\+\+ sources that may use - modules, but modules are not supported by this generator\. See the - cmake-cxxmodules\(7\) manual and the CMAKE_CXX_SCAN_FOR_MODULES variable\. + modules, but modules are not supported by this generator: + + [^ +]+ + + Modules are supported only by Ninja, Ninja Multi-Config, and Visual Studio + generators for VS 17\.4 and newer\. See the cmake-cxxmodules\(7\) manual for + details\. Use the CMAKE_CXX_SCAN_FOR_MODULES variable to enable or disable + scanning\. ) diff --git a/Tests/RunCMake/CXXModules/NoScanningTargetProperty-stderr.txt b/Tests/RunCMake/CXXModules/NoScanningTargetProperty-stderr.txt index 9dfb3e9..a72fd16 100644 --- a/Tests/RunCMake/CXXModules/NoScanningTargetProperty-stderr.txt +++ b/Tests/RunCMake/CXXModules/NoScanningTargetProperty-stderr.txt @@ -1,10 +1,17 @@ (CMake Error in CMakeLists.txt: The target named "noscanning-target-property" has C\+\+ sources that may use modules, but the compiler does not provide a way to discover the import - graph dependencies\. See the cmake-cxxmodules\(7\) manual and the - CMAKE_CXX_SCAN_FOR_MODULES variable\. + graph dependencies\. See the cmake-cxxmodules\(7\) manual for details\. Use + the CMAKE_CXX_SCAN_FOR_MODULES variable to enable or disable scanning\. |CMake Error in CMakeLists.txt: The target named "noscanning-target-property" has C\+\+ sources that may use - modules, but modules are not supported by this generator\. See the - cmake-cxxmodules\(7\) manual and the CMAKE_CXX_SCAN_FOR_MODULES variable\. + modules, but modules are not supported by this generator: + + [^ +]+ + + Modules are supported only by Ninja, Ninja Multi-Config, and Visual Studio + generators for VS 17\.4 and newer\. See the cmake-cxxmodules\(7\) manual for + details\. Use the CMAKE_CXX_SCAN_FOR_MODULES variable to enable or disable + scanning\. ) -- cgit v0.12