summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2019-01-28 13:21:32 (GMT)
committerKitware Robot <kwrobot@kitware.com>2019-01-28 13:21:50 (GMT)
commit1593e16d881bf74fd8981e1290d20f28191f1f0e (patch)
tree1b6753dc6e1a12314452b3a477453f28e55b9949
parentdc752c9d2d4bc2c0ad047689bd01bb75aa8f8fb9 (diff)
parent2a9220c34d26d33b5733ba41a25c44e02c8cdb3a (diff)
downloadCMake-1593e16d881bf74fd8981e1290d20f28191f1f0e.zip
CMake-1593e16d881bf74fd8981e1290d20f28191f1f0e.tar.gz
CMake-1593e16d881bf74fd8981e1290d20f28191f1f0e.tar.bz2
Merge topic 'get_filename_component_last_ext'
2a9220c34d Help: Add notes for topic 'get_filename_component_last_ext' edda30d0f5 Tests: Add tests for LAST_EXT and NAME_WLE 7a25ef326b Help: Add documentation for new get_filename_component components e50a36df48 cmGetFilenameComponentCommand: Add more components Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !2853
-rw-r--r--Help/command/get_filename_component.rst2
-rw-r--r--Help/release/dev/get_filename_component_last_ext.rst6
-rw-r--r--Source/cmGetFilenameComponentCommand.cxx4
-rw-r--r--Tests/RunCMake/get_filename_component/KnownComponents.cmake4
4 files changed, 15 insertions, 1 deletions
diff --git a/Help/command/get_filename_component.rst b/Help/command/get_filename_component.rst
index 3e3c9c3..f55499a 100644
--- a/Help/command/get_filename_component.rst
+++ b/Help/command/get_filename_component.rst
@@ -15,6 +15,8 @@ Sets ``<var>`` to a component of ``<FileName>``, where ``<mode>`` is one of:
NAME = File name without directory
EXT = File name longest extension (.b.c from d/a.b.c)
NAME_WE = File name without directory or longest extension
+ LAST_EXT = File name last extention (.c from d/a.b.c)
+ NAME_WLE = File name without directory or last extension
PATH = Legacy alias for DIRECTORY (use for CMake <= 2.8.11)
Paths are returned with forward slashes and have no trailing slashes.
diff --git a/Help/release/dev/get_filename_component_last_ext.rst b/Help/release/dev/get_filename_component_last_ext.rst
new file mode 100644
index 0000000..2487dbc
--- /dev/null
+++ b/Help/release/dev/get_filename_component_last_ext.rst
@@ -0,0 +1,6 @@
+get_filename_component_last_ext
+-------------------------------
+
+* The :command:`get_filename_component` command gained new
+ ``LAST_EXT`` and ``NAME_WLE`` variants to work with the
+ extension after the last ``.`` in the name.
diff --git a/Source/cmGetFilenameComponentCommand.cxx b/Source/cmGetFilenameComponentCommand.cxx
index ffb895e..163b4c8 100644
--- a/Source/cmGetFilenameComponentCommand.cxx
+++ b/Source/cmGetFilenameComponentCommand.cxx
@@ -88,6 +88,10 @@ bool cmGetFilenameComponentCommand::InitialPass(
result = cmSystemTools::GetFilenameExtension(filename);
} else if (args[2] == "NAME_WE") {
result = cmSystemTools::GetFilenameWithoutExtension(filename);
+ } else if (args[2] == "LAST_EXT") {
+ result = cmSystemTools::GetFilenameLastExtension(filename);
+ } else if (args[2] == "NAME_WLE") {
+ result = cmSystemTools::GetFilenameWithoutLastExtension(filename);
} else if (args[2] == "ABSOLUTE" || args[2] == "REALPATH") {
// If the path given is relative, evaluate it relative to the
// current source directory unless the user passes a different
diff --git a/Tests/RunCMake/get_filename_component/KnownComponents.cmake b/Tests/RunCMake/get_filename_component/KnownComponents.cmake
index ac77ac3..54b858f 100644
--- a/Tests/RunCMake/get_filename_component/KnownComponents.cmake
+++ b/Tests/RunCMake/get_filename_component/KnownComponents.cmake
@@ -11,8 +11,10 @@ set(expect_DIRECTORY "/path/to")
set(expect_NAME "filename.ext.in")
set(expect_EXT ".ext.in")
set(expect_NAME_WE "filename")
+set(expect_LAST_EXT ".in")
+set(expect_NAME_WLE "filename.ext")
set(expect_PATH "/path/to")
-foreach(c DIRECTORY NAME EXT NAME_WE PATH)
+foreach(c DIRECTORY NAME EXT NAME_WE LAST_EXT NAME_WLE PATH)
get_filename_component(actual_${c} "${filename}" ${c})
check("${c}" "${actual_${c}}" "${expect_${c}}")
list(APPEND non_cache_vars actual_${c})