get_filename_component: Add DIRECTORY option (#14091)
The name "PATH" is not precise so add equivalent option "DIRECTORY". Document the latter as preferred and the former as a legacy alias.
This commit is contained in:
parent
ec1ba9b0ae
commit
7d1590e6f9
@ -58,7 +58,7 @@ bool cmGetFilenameComponentCommand
|
|||||||
}
|
}
|
||||||
std::string storeArgs;
|
std::string storeArgs;
|
||||||
std::string programArgs;
|
std::string programArgs;
|
||||||
if (args[2] == "PATH")
|
if (args[2] == "DIRECTORY" || args[2] == "PATH")
|
||||||
{
|
{
|
||||||
result = cmSystemTools::GetFilenamePath(filename);
|
result = cmSystemTools::GetFilenamePath(filename);
|
||||||
}
|
}
|
||||||
|
@ -64,12 +64,13 @@ public:
|
|||||||
return
|
return
|
||||||
" get_filename_component(<VAR> <FileName> <COMP> [CACHE])\n"
|
" get_filename_component(<VAR> <FileName> <COMP> [CACHE])\n"
|
||||||
"Set <VAR> to a component of <FileName>, where <COMP> is one of:\n"
|
"Set <VAR> to a component of <FileName>, where <COMP> is one of:\n"
|
||||||
" PATH = Directory without file name\n"
|
" DIRECTORY = Directory without file name\n"
|
||||||
" NAME = File name without directory\n"
|
" NAME = File name without directory\n"
|
||||||
" EXT = File name longest extension (.b.c from d/a.b.c)\n"
|
" EXT = File name longest extension (.b.c from d/a.b.c)\n"
|
||||||
" NAME_WE = File name without directory or longest extension\n"
|
" NAME_WE = File name without directory or longest extension\n"
|
||||||
" ABSOLUTE = Full path to file\n"
|
" ABSOLUTE = Full path to file\n"
|
||||||
" REALPATH = Full path to existing file with symlinks resolved\n"
|
" REALPATH = Full path to existing file with symlinks resolved\n"
|
||||||
|
" PATH = Legacy alias for DIRECTORY (use for CMake <= 2.8.11)\n"
|
||||||
"Paths are returned with forward slashes and have no trailing slahes. "
|
"Paths are returned with forward slashes and have no trailing slahes. "
|
||||||
"The longest file extension is always considered. "
|
"The longest file extension is always considered. "
|
||||||
"If the optional CACHE argument is specified, the result variable is "
|
"If the optional CACHE argument is specified, the result variable is "
|
||||||
|
@ -5,28 +5,29 @@ macro(check desc actual expect)
|
|||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
set(filename "/path/to/filename.ext.in")
|
set(filename "/path/to/filename.ext.in")
|
||||||
set(expect_PATH "/path/to")
|
set(expect_DIRECTORY "/path/to")
|
||||||
set(expect_NAME "filename.ext.in")
|
set(expect_NAME "filename.ext.in")
|
||||||
set(expect_EXT ".ext.in")
|
set(expect_EXT ".ext.in")
|
||||||
set(expect_NAME_WE "filename")
|
set(expect_NAME_WE "filename")
|
||||||
foreach(c PATH NAME EXT NAME_WE)
|
set(expect_PATH "/path/to")
|
||||||
|
foreach(c DIRECTORY NAME EXT NAME_WE PATH)
|
||||||
get_filename_component(actual_${c} "${filename}" ${c})
|
get_filename_component(actual_${c} "${filename}" ${c})
|
||||||
check("${c}" "${actual_${c}}" "${expect_${c}}")
|
check("${c}" "${actual_${c}}" "${expect_${c}}")
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
get_filename_component(test_slashes "c:\\path\\to\\filename.ext.in" PATH)
|
get_filename_component(test_slashes "c:\\path\\to\\filename.ext.in" DIRECTORY)
|
||||||
check("PATH from backslashes" "${test_slashes}" "c:/path/to")
|
check("DIRECTORY from backslashes" "${test_slashes}" "c:/path/to")
|
||||||
|
|
||||||
get_filename_component(test_winroot "c:\\filename.ext.in" PATH)
|
get_filename_component(test_winroot "c:\\filename.ext.in" DIRECTORY)
|
||||||
check("PATH in windows root" "${test_winroot}" "c:/")
|
check("DIRECTORY in windows root" "${test_winroot}" "c:/")
|
||||||
|
|
||||||
get_filename_component(test_absolute "/path/to/a/../filename.ext.in" ABSOLUTE)
|
get_filename_component(test_absolute "/path/to/a/../filename.ext.in" ABSOLUTE)
|
||||||
check("ABSOLUTE" "${test_absolute}" "/path/to/filename.ext.in")
|
check("ABSOLUTE" "${test_absolute}" "/path/to/filename.ext.in")
|
||||||
|
|
||||||
get_filename_component(test_cache "/path/to/filename.ext.in" PATH CACHE)
|
get_filename_component(test_cache "/path/to/filename.ext.in" DIRECTORY CACHE)
|
||||||
check("CACHE 1" "${test_cache}" "/path/to")
|
check("CACHE 1" "${test_cache}" "/path/to")
|
||||||
get_filename_component(test_cache "/path/to/other/filename.ext.in" PATH CACHE)
|
get_filename_component(test_cache "/path/to/other/filename.ext.in" DIRECTORY CACHE)
|
||||||
check("CACHE 2" "${test_cache}" "/path/to")
|
check("CACHE 2" "${test_cache}" "/path/to")
|
||||||
unset(test_cache CACHE)
|
unset(test_cache CACHE)
|
||||||
get_filename_component(test_cache "/path/to/other/filename.ext.in" PATH CACHE)
|
get_filename_component(test_cache "/path/to/other/filename.ext.in" DIRECTORY CACHE)
|
||||||
check("CACHE 3" "${test_cache}" "/path/to/other")
|
check("CACHE 3" "${test_cache}" "/path/to/other")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user