Przeglądaj źródła

Merge topic 'error-on-exported-missing-include-dir'

634bb33 Error if linked target has relative paths in INTERFACE_INCLUDE_DIRECTORIES
Brad King 12 lat temu
rodzic
commit
2afcbe3090

+ 14 - 0
Source/cmTarget.cxx

@@ -2842,6 +2842,20 @@ static void processIncludeDirectories(cmTarget *tgt,
         return;
         }
 
+      if (!cmSystemTools::FileIsFullPath(li->c_str()))
+        {
+        if (!(*it)->TargetName.empty())
+          {
+          cmOStringStream e;
+          e << "Target \"" << (*it)->TargetName << "\" contains relative "
+            "path in its INTERFACE_INCLUDE_DIRECTORIES:\n"
+            "  \"" << *li << "\" ";
+          tgt->GetMakefile()->IssueMessage(cmake::FATAL_ERROR,
+                                           e.str().c_str());
+          return;
+          }
+        }
+
       if (testIsOff && !cmSystemTools::IsOff(li->c_str()))
         {
         cmSystemTools::ConvertToUnixSlashes(*li);

+ 1 - 0
Tests/RunCMake/include_directories/RelativePathInGenex-result.txt

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

+ 5 - 0
Tests/RunCMake/include_directories/RelativePathInGenex-stderr.txt

@@ -0,0 +1,5 @@
+CMake Error in CMakeLists.txt:
+  Target "testTarget" contains relative path in its
+  INTERFACE_INCLUDE_DIRECTORIES:
+
+    "foo"

+ 8 - 0
Tests/RunCMake/include_directories/RelativePathInGenex.cmake

@@ -0,0 +1,8 @@
+
+project(RelativePathInInterface)
+
+add_library(testTarget "${CMAKE_CURRENT_SOURCE_DIR}/empty.cpp")
+set_property(TARGET testTarget PROPERTY INTERFACE_INCLUDE_DIRECTORIES "$<1:foo>")
+
+add_library(userTarget "${CMAKE_CURRENT_SOURCE_DIR}/empty.cpp")
+target_link_libraries(userTarget testTarget)

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

@@ -7,3 +7,4 @@ run_cmake(SourceDirectoryInInterface)
 run_cmake(BinaryDirectoryInInterface)
 run_cmake(RelativePathInInterface)
 run_cmake(ImportedTarget)
+run_cmake(RelativePathInGenex)