diff options
-rw-r--r-- | Source/cmLocalGenerator.cxx | 9 | ||||
-rw-r--r-- | Tests/RunCMake/CompileFeatures/NotAStandard-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/CompileFeatures/NotAStandard-stderr.txt | 4 | ||||
-rw-r--r-- | Tests/RunCMake/CompileFeatures/NotAStandard.cmake | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake | 2 |
5 files changed, 17 insertions, 1 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index d9dcad4..dd4a8f8 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -2265,7 +2265,14 @@ AddCompilerRequirementFlag(std::string &flags, cmTarget* target, std::vector<std::string>::const_iterator stdIt = std::find(stds.begin(), stds.end(), standard); - assert(stdIt != stds.end()); + if (stdIt == stds.end()) + { + std::string e = + lang + "_STANDARD is set to invalid value '" + standard + "'"; + this->GetGlobalGenerator()->GetCMakeInstance() + ->IssueMessage(cmake::FATAL_ERROR, e, target->GetBacktrace()); + return; + } std::vector<std::string>::const_iterator defaultStdIt = std::find(stds.begin(), stds.end(), defaultStd); diff --git a/Tests/RunCMake/CompileFeatures/NotAStandard-result.txt b/Tests/RunCMake/CompileFeatures/NotAStandard-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CompileFeatures/NotAStandard-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CompileFeatures/NotAStandard-stderr.txt b/Tests/RunCMake/CompileFeatures/NotAStandard-stderr.txt new file mode 100644 index 0000000..deab12f --- /dev/null +++ b/Tests/RunCMake/CompileFeatures/NotAStandard-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at NotAStandard.cmake:[0-9]+ \(add_library\): + CXX_STANDARD is set to invalid value 'bad' +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\) diff --git a/Tests/RunCMake/CompileFeatures/NotAStandard.cmake b/Tests/RunCMake/CompileFeatures/NotAStandard.cmake new file mode 100644 index 0000000..11529d8 --- /dev/null +++ b/Tests/RunCMake/CompileFeatures/NotAStandard.cmake @@ -0,0 +1,2 @@ +set(CMAKE_CXX_STANDARD bad) +add_library(somelib STATIC empty.cpp) diff --git a/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake b/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake index 833a315..c1b2227 100644 --- a/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake +++ b/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake @@ -43,6 +43,8 @@ else() endif() if(CXX_STANDARD_DEFAULT) + run_cmake(NotAStandard) + foreach(standard 98 11) file(READ "${RunCMake_BINARY_DIR}/generate_feature_list-build/cxx${standard}_flag.txt" |