Features: FATAL_ERROR on compilers with no recorded features.

Users of the new target_compile_features command are expected to
check the existence of the CMAKE_CXX_COMPILE_FEATURES variable before
attempting to use it to require features.
This commit is contained in:
Stephen Kelly 2014-04-15 18:09:21 +02:00
parent 447fbb3fac
commit 8d0b1ccac1
9 changed files with 59 additions and 2 deletions

View File

@ -4604,8 +4604,28 @@ AddRequiredTargetFeature(cmTarget *target, const std::string& feature,
if (!featuresKnown || !*featuresKnown)
{
// We know of no features for the compiler at all.
return true;
cmOStringStream e;
if (error)
{
e << "no";
}
else
{
e << "No";
}
e << " known features for compiler\n\""
<< this->GetDefinition("CMAKE_" + lang + "_COMPILER_ID")
<< "\"\nversion "
<< this->GetDefinition("CMAKE_" + lang + "_COMPILER_VERSION") << ".";
if (error)
{
*error = e.str();
}
else
{
this->IssueMessage(cmake::FATAL_ERROR, e.str());
}
return false;
}
std::vector<std::string> availableFeatures;

View File

@ -0,0 +1,8 @@
CMake Error at NoSupportedCxxFeatures.cmake:3 \(target_compile_features\):
target_compile_features no known features for compiler
"[^"]*"
version *[.0-9]+\.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)

View File

@ -0,0 +1,3 @@
add_library(no_features empty.cpp)
target_compile_features(no_features PRIVATE cxx_constexpr)

View File

@ -0,0 +1,6 @@
CMake Error in CMakeLists.txt:
No known features for compiler
"[^"]*"
version *[.0-9]+\.

View File

@ -0,0 +1,3 @@
add_library(no_features empty.cpp)
target_compile_features(no_features PRIVATE $<1:cxx_constexpr>)

View File

@ -7,3 +7,14 @@ run_cmake(NotAFeature_OriginDebug)
run_cmake(NotAFeature_OriginDebugGenex)
run_cmake(NotAFeature_OriginDebugTransitive)
run_cmake(NotAFeature_OriginDebug_target_compile_features)
run_cmake(generate_feature_list)
file(READ
"${RunCMake_BINARY_DIR}/generate_feature_list-build/features.txt"
FEATURES
)
if (NOT FEATURES)
run_cmake(NoSupportedCxxFeatures)
run_cmake(NoSupportedCxxFeaturesGenex)
endif()

View File

@ -0,0 +1,4 @@
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/features.txt"
"${CMAKE_CXX_COMPILE_FEATURES}"
)