diff options
-rw-r--r-- | Help/command/source_group.rst | 6 | ||||
-rw-r--r-- | Help/release/dev/source_group_forward_slashes.rst | 5 | ||||
-rw-r--r-- | Source/cmMakefile.cxx | 8 | ||||
-rw-r--r-- | Tests/SourceGroups/CMakeLists.txt | 6 | ||||
-rw-r--r-- | Tests/SourceGroups/main.c | 4 | ||||
-rw-r--r-- | Tests/SourceGroups/nested.c | 4 |
6 files changed, 26 insertions, 7 deletions
diff --git a/Help/command/source_group.rst b/Help/command/source_group.rst index 6623c98..5ae9e51 100644 --- a/Help/command/source_group.rst +++ b/Help/command/source_group.rst @@ -37,11 +37,13 @@ explicitly lists the file with ``FILES`` will be favored, if any. If no group explicitly lists the file, the *last* group whose regular expression matches the file will be favored. -The ``<name>`` of the group and ``<prefix>`` argument may contain backslashes -to specify subgroups: +The ``<name>`` of the group and ``<prefix>`` argument may contain forward +slashes or backslashes to specify subgroups. Backslashes need to be escaped +appropriately: .. code-block:: cmake + source_group(base/subdir ...) source_group(outer\\inner ...) source_group(TREE <root> PREFIX sources\\inc ...) diff --git a/Help/release/dev/source_group_forward_slashes.rst b/Help/release/dev/source_group_forward_slashes.rst new file mode 100644 index 0000000..fa0dfa9 --- /dev/null +++ b/Help/release/dev/source_group_forward_slashes.rst @@ -0,0 +1,5 @@ +source_group_forward_slashes +---------------------------- + +* The :command:`source_group` command now also recognizes forward slashes + as subgroup delimiters, not just backslashes. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 58883b5..6f05d45 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -2404,11 +2404,11 @@ cmSourceGroup* cmMakefile::GetOrCreateSourceGroup( cmSourceGroup* cmMakefile::GetOrCreateSourceGroup(const std::string& name) { - const char* delimiter = this->GetDefinition("SOURCE_GROUP_DELIMITER"); - if (delimiter == nullptr) { - delimiter = "\\"; + const char* delimiters = this->GetDefinition("SOURCE_GROUP_DELIMITER"); + if (delimiters == nullptr) { + delimiters = "/\\"; } - return this->GetOrCreateSourceGroup(cmTokenize(name, delimiter)); + return this->GetOrCreateSourceGroup(cmTokenize(name, delimiters)); } /** diff --git a/Tests/SourceGroups/CMakeLists.txt b/Tests/SourceGroups/CMakeLists.txt index a5740bb..d726395 100644 --- a/Tests/SourceGroups/CMakeLists.txt +++ b/Tests/SourceGroups/CMakeLists.txt @@ -30,6 +30,9 @@ source_group(Base\\Sub1\\Base FILES bar.c) # a group without files, is currently not created source_group(EmptyGroup) +# Forward slashes can be delimiters too +source_group(Base/Nested FILES nested.c) + set(root ${CMAKE_CURRENT_SOURCE_DIR}) set(tree_files_without_prefix ${root}/sub1/tree_bar.c @@ -58,4 +61,5 @@ source_group(PREFIX "" FILES ${tree_files_with_empty_prefix} TREE ${root}) add_executable(SourceGroups main.c bar.c foo.c sub1/foo.c sub1/foobar.c baz.c ${tree_files_with_prefix} ${tree_files_without_prefix} - ${tree_files_with_empty_prefix} README.txt) + ${tree_files_with_empty_prefix} README.txt + nested.c) diff --git a/Tests/SourceGroups/main.c b/Tests/SourceGroups/main.c index 87225f5..f646b49 100644 --- a/Tests/SourceGroups/main.c +++ b/Tests/SourceGroups/main.c @@ -12,6 +12,7 @@ extern int tree_empty_prefix_bar(void); extern int tree_bar(void); extern int tree_foobar(void); extern int tree_baz(void); +extern int nested(void); int main() { @@ -23,5 +24,8 @@ int main() "tree_empty_prefix_bar: %d\n", tree_prefix_foo(), tree_prefix_bar(), tree_bar(), tree_foobar(), tree_baz(), tree_empty_prefix_foo(), tree_empty_prefix_bar()); + + printf("nested: %d\n", nested()); + return 0; } diff --git a/Tests/SourceGroups/nested.c b/Tests/SourceGroups/nested.c new file mode 100644 index 0000000..4e31480 --- /dev/null +++ b/Tests/SourceGroups/nested.c @@ -0,0 +1,4 @@ +int nested(void) +{ + return 123; +} |