Преглед на файлове

add_dependencies: Disallow use with INTERFACE_LIBRARY.

Stephen Kelly преди 12 години
родител
ревизия
6db7e6d24c

+ 9 - 0
Source/cmAddDependenciesCommand.cxx

@@ -33,6 +33,15 @@ bool cmAddDependenciesCommand
     }
     }
   if(cmTarget* target = this->Makefile->FindTargetToUse(target_name.c_str()))
   if(cmTarget* target = this->Makefile->FindTargetToUse(target_name.c_str()))
     {
     {
+    if (target->GetType() == cmTarget::INTERFACE_LIBRARY)
+      {
+      cmOStringStream e;
+      e << "Cannot add target-level dependencies to INTERFACE library "
+        "target \"" << target_name << "\".\n";
+      this->SetError(e.str().c_str());
+      return false;
+      }
+
     std::vector<std::string>::const_iterator s = args.begin();
     std::vector<std::string>::const_iterator s = args.begin();
     ++s; // skip over target_name
     ++s; // skip over target_name
     for (; s != args.end(); ++s)
     for (; s != args.end(); ++s)

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

@@ -5,3 +5,4 @@ run_cmake(target_commands)
 run_cmake(no_shared_libs)
 run_cmake(no_shared_libs)
 run_cmake(whitelist)
 run_cmake(whitelist)
 run_cmake(genex_link)
 run_cmake(genex_link)
+run_cmake(add_dependencies)

+ 1 - 0
Tests/RunCMake/interface_library/add_dependencies-result.txt

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

+ 6 - 0
Tests/RunCMake/interface_library/add_dependencies-stderr.txt

@@ -0,0 +1,6 @@
+CMake Error at add_dependencies.cmake:4 \(add_dependencies\):
+  add_dependencies Cannot add target-level dependencies to INTERFACE library
+  target "iface".
+
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)

+ 4 - 0
Tests/RunCMake/interface_library/add_dependencies.cmake

@@ -0,0 +1,4 @@
+
+add_library(foo empty.cpp)
+add_library(iface INTERFACE)
+add_dependencies(iface foo)