CMake-如何获取目录名中的倒数第二个?
因此,我:CMake-如何获取目录名中的倒数第二个?,cmake,Cmake,因此,我: get_filename_component(a_dir ${some_file} PATH) get_filename_component(a_last_dir ${a_dir} NAME) 其中,最后一个目录应返回我的目录的最低级别,而最后一个目录应返回我的完整目录 无论如何,我可以让第二个最后一个目录成为可能??要返回完整目录的第二个较低级别?将我的评论转换为答案 您可以通过附加。/…来使用 我理解您当前的解决方案是这样的: cmake_minimum_required(VE
get_filename_component(a_dir ${some_file} PATH)
get_filename_component(a_last_dir ${a_dir} NAME)
其中,最后一个目录应返回我的目录的最低级别,而最后一个目录应返回我的完整目录
无论如何,我可以让第二个最后一个目录成为可能??要返回完整目录的第二个较低级别?将我的评论转换为答案
您可以通过附加。/…
来使用
我理解您当前的解决方案是这样的:
cmake_minimum_required(VERSION 2.8)
project(SecondLastDirName)
set(some_file "some/dir/sub/some_file.h")
get_filename_component(a_dir "${some_file}" PATH)
get_filename_component(a_last_dir "${a_dir}" NAME)
get_filename_component(a_second_dir "${a_dir}" PATH)
get_filename_component(a_second_last_dir "${a_second_dir}" NAME)
message("a_second_last_dir = ${a_second_last_dir}")
它将第二个\u最后一个\u dir=dir
作为输出
您可以通过以下方式获得相同的输出:
get_filename_component(a_second_dir "${some_file}/../.." ABSOLUTE)
get_filename_component(a_second_last_dir "${a_second_dir}" NAME)
message("a_second_last_dir = ${a_second_last_dir}")
中间a_second_dir
路径可能是无效/不存在的路径(因为CMAKE\u CURRENT\u SOURCE_dir
前面有前缀),但我认为这在这里并不重要
如果您希望它是一个正确的绝对路径,您应该自己为正确的基本目录添加前缀(或者参见CMake 3.4,它引入了
base\u dir
选项来get\u filename\u component(…absolute)
)。通过附加。
?例如,get\u filename\u component(第二个\u last\u dir)/some/dir/sub/././…“绝对)
我没有完整的目录可供添加。
…你能给出一个目录名的示例以及你想提取的部分吗?我们是在谈论类似的事情吗?CMake的命令也允许很多事情。设法使它工作。我使用了directory of directory两次,这样我就可以得到父名称:D不是一个很好的解决方案,但它可以工作:PI仍然认为您可以使用。/..
。请看下面我的答案。