Browse Source

Merge topic 'source_group-tree-files'

8d93815d20 source_group command ensures that FILES arguments are actually files

Acked-by: Kitware Robot <[email protected]>
Merge-request: !3265
Kyle Edwards 6 years ago
parent
commit
40852eed8e
2 changed files with 12 additions and 1 deletions
  1. 4 1
      Source/cmSourceGroupCommand.cxx
  2. 8 0
      Tests/SourceGroups/CMakeLists.txt

+ 4 - 1
Source/cmSourceGroupCommand.cxx

@@ -80,7 +80,10 @@ std::vector<std::string> prepareFilesPathsForTree(
   prepared.reserve(filesPaths.size());
 
   for (auto const& filePath : filesPaths) {
-    prepared.push_back(prepareFilePathForTree(filePath, currentSourceDir));
+    // If provided file path is actually not a file, silently ignore it.
+    if (cmSystemTools::FileExists(filePath, /*isFile=*/true)) {
+      prepared.push_back(prepareFilePathForTree(filePath, currentSourceDir));
+    }
   }
 
   return prepared;

+ 8 - 0
Tests/SourceGroups/CMakeLists.txt

@@ -42,8 +42,16 @@ set(tree_files_with_prefix ${root}/tree_prefix_foo.c
 set(tree_files_with_empty_prefix ${root}/tree_empty_prefix_foo.c
                                  tree_empty_prefix_bar.c)
 
+set(tree_files_which_are_actually_directories ${root}
+                                              ${root}/
+                                              ${root}/sub1
+                                              ${root}/sub1/)
+
 source_group(TREE ${root} FILES ${tree_files_without_prefix})
 
+# Should not crash and not add any files - just silently ignore the directories
+source_group(TREE ${root} FILES ${tree_files_which_are_actually_directories})
+
 source_group(FILES ${tree_files_with_prefix} PREFIX tree_root/subgroup TREE ${root})
 
 source_group(PREFIX "" FILES ${tree_files_with_empty_prefix} TREE ${root})