Răsfoiți Sursa

Genex: Allow COMPILE_LANGUAGE to name a language that is not loaded

Evaluate to false on `$<COMPILE_LANGUAGE:Lang>` if language `Lang`
is not loaded.  This is helpful in exported targets consumed in other
projects that may not enable all the same languages.

Fixes: #17952
Henry Schreiner 7 ani în urmă
părinte
comite
4f82199bef

+ 0 - 9
Source/cmGeneratorExpressionNode.cxx

@@ -1013,16 +1013,7 @@ static const struct CompileLanguageNode : public cmGeneratorExpressionNode
       return std::string();
     }
 
-    std::vector<std::string> enabledLanguages;
     cmGlobalGenerator* gg = context->LG->GetGlobalGenerator();
-    gg->GetEnabledLanguages(enabledLanguages);
-    if (!parameters.empty() &&
-        std::find(enabledLanguages.begin(), enabledLanguages.end(),
-                  parameters.front()) == enabledLanguages.end()) {
-      reportError(context, content->GetOriginalExpression(),
-                  "$<COMPILE_LANGUAGE:...> Unknown language.");
-      return std::string();
-    }
     std::string genName = gg->GetName();
     if (genName.find("Makefiles") == std::string::npos &&
         genName.find("Ninja") == std::string::npos &&

+ 0 - 1
Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-unknown-lang-result.txt

@@ -1 +0,0 @@
-1

+ 0 - 8
Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-unknown-lang-stderr.txt

@@ -1,8 +0,0 @@
-CMake Error at COMPILE_LANGUAGE-unknown-lang.cmake:4 \(target_compile_options\):
-  Error evaluating generator expression:
-
-    \$<COMPILE_LANGUAGE:CXX>
-
-  \$<COMPILE_LANGUAGE:...> Unknown language.
-Call Stack \(most recent call first\):
-  CMakeLists.txt:3 \(include\)

+ 1 - 1
Tests/RunCMake/GeneratorExpression/COMPILE_LANGUAGE-unknown-lang.cmake

@@ -1,4 +1,4 @@
 
 enable_language(C)
 add_executable(empty empty.c)
-target_compile_options(empty PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-Wall>)
+target_compile_options(empty PRIVATE $<$<COMPILE_LANGUAGE:CXX>:$<TARGET_EXISTS:too,many,parameters>>)