Jelajahi Sumber

Merge topic 'object-library-no-TARGET_FILE'

d960589 Genex: Reject $<TARGET_FILE:...> for object libraries (#14532)
Brad King 12 tahun lalu
induk
melakukan
872a9d6476

+ 1 - 1
Source/cmGeneratorExpressionEvaluator.cxx

@@ -1341,7 +1341,7 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode
                     "No target \"" + name + "\"");
       return std::string();
       }
-    if(target->GetType() >= cmTarget::UTILITY &&
+    if(target->GetType() >= cmTarget::OBJECT_LIBRARY &&
       target->GetType() != cmTarget::UNKNOWN_LIBRARY)
       {
       ::reportError(context, content->GetOriginalExpression(),

+ 1 - 0
Tests/RunCMake/GeneratorExpression/BadTargetTypeObject-result.txt

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

+ 26 - 0
Tests/RunCMake/GeneratorExpression/BadTargetTypeObject-stderr.txt

@@ -0,0 +1,26 @@
+CMake Error at BadTargetTypeObject.cmake:3 \(add_custom_target\):
+  Error evaluating generator expression:
+
+    \$<TARGET_FILE:objlib>
+
+  Target "objlib" is not an executable or library.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
++
+CMake Error at BadTargetTypeObject.cmake:3 \(add_custom_target\):
+  Error evaluating generator expression:
+
+    \$<TARGET_SONAME_FILE:objlib>
+
+  Target "objlib" is not an executable or library.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
++
+CMake Error at BadTargetTypeObject.cmake:3 \(add_custom_target\):
+  Error evaluating generator expression:
+
+    \$<TARGET_LINKER_FILE:objlib>
+
+  Target "objlib" is not an executable or library.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)

+ 7 - 0
Tests/RunCMake/GeneratorExpression/BadTargetTypeObject.cmake

@@ -0,0 +1,7 @@
+enable_language(C)
+add_library(objlib OBJECT empty.c)
+add_custom_target(check ALL COMMAND echo
+  $<TARGET_FILE:objlib>
+  $<TARGET_SONAME_FILE:objlib>
+  $<TARGET_LINKER_FILE:objlib>
+  )

+ 1 - 0
Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake

@@ -7,4 +7,5 @@ run_cmake(BadNOT)
 run_cmake(BadStrEqual)
 run_cmake(BadZero)
 run_cmake(BadTargetName)
+run_cmake(BadTargetTypeObject)
 run_cmake(BadInstallPrefix)

+ 0 - 0
Tests/RunCMake/GeneratorExpression/empty.c