Explorar el Código

cmSourceFileLocation: Collapse full path for directory comparisons.

Otherwise Matches() ends up doing a comparison of
the directories

 /path/to/dir/subdir/..

and

 /path/to/dir

as strings and not matching where it should.
Stephen Kelly hace 11 años
padre
commit
4959f3413c

+ 5 - 0
Source/cmSourceFileLocation.cxx

@@ -60,6 +60,11 @@ cmSourceFileLocation
   this->AmbiguousDirectory = !cmSystemTools::FileIsFullPath(name.c_str());
   this->AmbiguousExtension = true;
   this->Directory = cmSystemTools::GetFilenamePath(name);
+  if (cmSystemTools::FileIsFullPath(this->Directory.c_str()))
+    {
+    this->Directory
+                  = cmSystemTools::CollapseFullPath(this->Directory.c_str());
+    }
   this->Name = cmSystemTools::GetFilenameName(name);
   this->UpdateExtension(name);
 }

+ 2 - 0
Tests/Properties/CMakeLists.txt

@@ -143,3 +143,5 @@ set_property(CACHE SOME_ENTRY PROPERTY VALUE "${expect_VALUE}")
 set_property(CACHE SOME_ENTRY PROPERTY ADVANCED "${expect_ADVANCED}")
 set_property(CACHE SOME_ENTRY PROPERTY STRINGS "${expect_STRINGS}")
 check_cache_props()
+
+add_subdirectory(SubDir2)

+ 5 - 0
Tests/Properties/SubDir2/CMakeLists.txt

@@ -0,0 +1,5 @@
+
+set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/../subdirtest.cxx"
+  PROPERTIES COMPILE_DEFINITIONS SUBDIR_TEST)
+
+add_executable(subdirtest "${CMAKE_CURRENT_SOURCE_DIR}/../subdirtest.cxx")

+ 9 - 0
Tests/Properties/subdirtest.cxx

@@ -0,0 +1,9 @@
+
+#ifndef SUBDIR_TEST
+#error Expected SUBDIR_TEST
+#endif
+
+int main(int, char**)
+{
+  return 0;
+}