Diagnose invalid <LANG>_STANDARD value instead of crashing (#15426)

This commit is contained in:
Brad King 2015-02-27 16:48:39 -05:00
parent 99575c9ac1
commit 00d66557d4
5 changed files with 17 additions and 1 deletions

View File

@ -2270,7 +2270,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);

View File

@ -0,0 +1 @@
1

View File

@ -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\)

View File

@ -0,0 +1,2 @@
set(CMAKE_CXX_STANDARD bad)
add_library(somelib STATIC empty.cpp)

View File

@ -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"