From ec1e40af1adda4e884168a7972c24e2d8ff33438 Mon Sep 17 00:00:00 2001 From: Robert Maynard Date: Tue, 11 Jan 2022 13:12:45 -0500 Subject: cmStandardLevelResolver: Better error message on unsupported language level Fixes #23079 --- Source/cmStandardLevelResolver.cxx | 8 ++++++-- Tests/RunCMake/CompileFeatures/RequireCXX11-stderr.txt | 3 +-- Tests/RunCMake/CompileFeatures/RequireCXX11Ext-stderr.txt | 2 +- Tests/RunCMake/CompileFeatures/RequireCXX11ExtVariable-stderr.txt | 2 +- Tests/RunCMake/CompileFeatures/RequireCXX11Variable-stderr.txt | 3 +-- Tests/RunCMake/CompileFeatures/RequireCXX98-stderr.txt | 3 +-- Tests/RunCMake/CompileFeatures/RequireCXX98Ext-stderr.txt | 2 +- Tests/RunCMake/CompileFeatures/RequireCXX98ExtVariable-stderr.txt | 2 +- Tests/RunCMake/CompileFeatures/RequireCXX98Variable-stderr.txt | 3 +-- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Source/cmStandardLevelResolver.cxx b/Source/cmStandardLevelResolver.cxx index 61416e0..c027e29 100644 --- a/Source/cmStandardLevelResolver.cxx +++ b/Source/cmStandardLevelResolver.cxx @@ -152,8 +152,12 @@ struct StandardLevelComputer "dialect \"" << this->Language << *standardProp << "\" " << (ext ? "(with compiler extensions)" : "") - << ", but CMake " - "does not know the compile flags to use to enable it."; + << ". But the current compiler \"" + << makefile->GetSafeDefinition("CMAKE_" + this->Language + + "_COMPILER_ID") + << "\" does not support this, or " + "CMake does not know the flags to enable it."; + makefile->IssueMessage(MessageType::FATAL_ERROR, e.str()); } return option_flag; diff --git a/Tests/RunCMake/CompileFeatures/RequireCXX11-stderr.txt b/Tests/RunCMake/CompileFeatures/RequireCXX11-stderr.txt index 0fc9112..a6ed7b7 100644 --- a/Tests/RunCMake/CompileFeatures/RequireCXX11-stderr.txt +++ b/Tests/RunCMake/CompileFeatures/RequireCXX11-stderr.txt @@ -1,3 +1,2 @@ CMake Error in CMakeLists.txt: - Target "foo" requires the language dialect "CXX11" , but CMake does not - know the compile flags to use to enable it. + Target "foo" requires the language dialect "CXX11".* diff --git a/Tests/RunCMake/CompileFeatures/RequireCXX11Ext-stderr.txt b/Tests/RunCMake/CompileFeatures/RequireCXX11Ext-stderr.txt index 5c68a1c..2569c84 100644 --- a/Tests/RunCMake/CompileFeatures/RequireCXX11Ext-stderr.txt +++ b/Tests/RunCMake/CompileFeatures/RequireCXX11Ext-stderr.txt @@ -1,3 +1,3 @@ CMake Error in CMakeLists.txt: Target "foo" requires the language dialect "CXX11" \(with compiler - extensions\), but CMake does not know the compile flags to use to enable it. + extensions\).* diff --git a/Tests/RunCMake/CompileFeatures/RequireCXX11ExtVariable-stderr.txt b/Tests/RunCMake/CompileFeatures/RequireCXX11ExtVariable-stderr.txt index 5c68a1c..2569c84 100644 --- a/Tests/RunCMake/CompileFeatures/RequireCXX11ExtVariable-stderr.txt +++ b/Tests/RunCMake/CompileFeatures/RequireCXX11ExtVariable-stderr.txt @@ -1,3 +1,3 @@ CMake Error in CMakeLists.txt: Target "foo" requires the language dialect "CXX11" \(with compiler - extensions\), but CMake does not know the compile flags to use to enable it. + extensions\).* diff --git a/Tests/RunCMake/CompileFeatures/RequireCXX11Variable-stderr.txt b/Tests/RunCMake/CompileFeatures/RequireCXX11Variable-stderr.txt index 0fc9112..a6ed7b7 100644 --- a/Tests/RunCMake/CompileFeatures/RequireCXX11Variable-stderr.txt +++ b/Tests/RunCMake/CompileFeatures/RequireCXX11Variable-stderr.txt @@ -1,3 +1,2 @@ CMake Error in CMakeLists.txt: - Target "foo" requires the language dialect "CXX11" , but CMake does not - know the compile flags to use to enable it. + Target "foo" requires the language dialect "CXX11".* diff --git a/Tests/RunCMake/CompileFeatures/RequireCXX98-stderr.txt b/Tests/RunCMake/CompileFeatures/RequireCXX98-stderr.txt index 47c8688..97d6f8e 100644 --- a/Tests/RunCMake/CompileFeatures/RequireCXX98-stderr.txt +++ b/Tests/RunCMake/CompileFeatures/RequireCXX98-stderr.txt @@ -1,3 +1,2 @@ CMake Error in CMakeLists.txt: - Target "foo" requires the language dialect "CXX98" , but CMake does not - know the compile flags to use to enable it. + Target "foo" requires the language dialect "CXX98".* diff --git a/Tests/RunCMake/CompileFeatures/RequireCXX98Ext-stderr.txt b/Tests/RunCMake/CompileFeatures/RequireCXX98Ext-stderr.txt index b4fdf8a..4a2e6db 100644 --- a/Tests/RunCMake/CompileFeatures/RequireCXX98Ext-stderr.txt +++ b/Tests/RunCMake/CompileFeatures/RequireCXX98Ext-stderr.txt @@ -1,3 +1,3 @@ CMake Error in CMakeLists.txt: Target "foo" requires the language dialect "CXX98" \(with compiler - extensions\), but CMake does not know the compile flags to use to enable it. + extensions\).* diff --git a/Tests/RunCMake/CompileFeatures/RequireCXX98ExtVariable-stderr.txt b/Tests/RunCMake/CompileFeatures/RequireCXX98ExtVariable-stderr.txt index b4fdf8a..4a2e6db 100644 --- a/Tests/RunCMake/CompileFeatures/RequireCXX98ExtVariable-stderr.txt +++ b/Tests/RunCMake/CompileFeatures/RequireCXX98ExtVariable-stderr.txt @@ -1,3 +1,3 @@ CMake Error in CMakeLists.txt: Target "foo" requires the language dialect "CXX98" \(with compiler - extensions\), but CMake does not know the compile flags to use to enable it. + extensions\).* diff --git a/Tests/RunCMake/CompileFeatures/RequireCXX98Variable-stderr.txt b/Tests/RunCMake/CompileFeatures/RequireCXX98Variable-stderr.txt index 47c8688..97d6f8e 100644 --- a/Tests/RunCMake/CompileFeatures/RequireCXX98Variable-stderr.txt +++ b/Tests/RunCMake/CompileFeatures/RequireCXX98Variable-stderr.txt @@ -1,3 +1,2 @@ CMake Error in CMakeLists.txt: - Target "foo" requires the language dialect "CXX98" , but CMake does not - know the compile flags to use to enable it. + Target "foo" requires the language dialect "CXX98".* -- cgit v0.12