Browse Source

Merge branch 'install-no-imported-global' into release-3.14

Merge-request: !3071
Brad King 6 years ago
parent
commit
c042c998d0

+ 5 - 1
Source/cmInstallCommand.cxx

@@ -402,7 +402,11 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args)
     cmTarget* target = this->Makefile->FindLocalNonAliasTarget(tgt);
     if (!target) {
       // If no local target has been found, find it in the global scope.
-      target = this->Makefile->GetGlobalGenerator()->FindTarget(tgt, true);
+      cmTarget* const global_target =
+        this->Makefile->GetGlobalGenerator()->FindTarget(tgt, true);
+      if (global_target && !global_target->IsImported()) {
+        target = global_target;
+      }
     }
     if (target) {
       // Found the target.  Check its type.

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

@@ -66,6 +66,7 @@ run_cmake(CMP0062-WARN)
 run_cmake(CMP0087-OLD)
 run_cmake(CMP0087-NEW)
 run_cmake(CMP0087-WARN)
+run_cmake(TARGETS-ImportedGlobal)
 run_cmake(TARGETS-NAMELINK_COMPONENT-bad-all)
 run_cmake(TARGETS-NAMELINK_COMPONENT-bad-exc)
 run_cmake(FILES-DESTINATION-TYPE)

+ 1 - 0
Tests/RunCMake/install/TARGETS-ImportedGlobal-result.txt

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

+ 4 - 0
Tests/RunCMake/install/TARGETS-ImportedGlobal-stderr.txt

@@ -0,0 +1,4 @@
+^CMake Error at TARGETS-ImportedGlobal.cmake:[0-9]+ \(install\):
+  install TARGETS given target "imported_global" which does not exist.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:[0-9]+ \(include\)$

+ 3 - 0
Tests/RunCMake/install/TARGETS-ImportedGlobal.cmake

@@ -0,0 +1,3 @@
+add_library(imported_global STATIC IMPORTED GLOBAL)
+set_property(TARGET imported_global PROPERTY IMPORTED_LOCATION /does_not_exist)
+install(TARGETS imported_global DESTINATION bin)