当前位置:  开发笔记 > 编程语言 > 正文

CMake - 如何在目录名称中获得第二个最后一个?

如何解决《CMake-如何在目录名称中获得第二个最后一个?》经验,为你挑选了1个好方法。

所以我有:

get_filename_component(a_dir ${some_file} PATH)
get_filename_component(a_last_dir ${a_dir} NAME)

其中a_last_dir应该返回我的目录的最低级别,a_dir应该返回我的完整目录.

无论如何我可以使a_second_last_dir成为可能吗?要返回完整目录的第二个较低级别?



1> Florian..:

把我的评论转化为答案

您可以get_filename_component()通过追加使用../...

我了解您当前的解决方案如下所示:

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}")

这给出a_second_last_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_CURRENT_SOURCE_DIR是前缀的),但我认为这并不重要.

如果你想让它成为一个正确的绝对路径,你应该自己为正确的基地dir添加前缀(或者参见引入BASE_DIR选项的CMake 3.4 get_filename_component(... ABSOLUTE)).

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有