CMake - 如何获取目录名称中的倒数第二个?

2024-02-23

所以我有:

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 成为可能?返回完整目录的下二层?


将我的评论变成答案

您可以使用get_filename_component() https://cmake.org/cmake/help/v3.4/command/get_filename_component.html通过附加../...

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

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是前缀),但我认为这里并不重要。

如果您希望它是正确的绝对路径,您应该自己添加正确的基本目录前缀(或参见 CMake 3.4,其中引入了BASE_DIR选项get_filename_component(... ABSOLUTE)).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMake - 如何获取目录名称中的倒数第二个? 的相关文章

随机推荐

  • Java中将字符串转换为URL标准字符串

    我有一个字符串 例如 Cerepedia una apliaci n web 我想将其转换为有效的 URL 例如 Cerepedia unaaplicacionweb Note 特殊字符转换和空格删除 顺便问一下 URL 中允许使用逗号吗
  • Ionic:未定义不是构造函数 FileReader

    创建 FileReader 来自 ionic native file 实例时遇到问题 let f new FileReader 出现以下错误 TypeError undefined is not a constructor evaluati
  • 如何列出 Win32.DLL 中的可用方法

    我有一个 DLL 文件 其中包含一些我想在应用程序中调用的有用函数 我不再有它的文档了 如何发现 DLL 导出的函数及其方法签名 是否有列出函数及其参数的实用程序 转储箱 出口 Dumpbin http msdn microsoft com
  • 你能在同一对象的非重叠区域之间进行memcpy吗?

    C17 说以下内容memcpy 7 24 2 1p2 memcpy函数将s2指向的对象中的n个字符复制到指向的对象中 通过 s1 如果复制发生在objects重叠 行为是未定义的 常见的解释是您不能复制重叠的内存区域 但这并不完全相同 因为
  • jQuery UI 对话框不会关闭

    在我的网页上有一个按钮可以打开模式 jQuery 对话框 单击按钮时运行的代码如下 main onoffline container append div div dialog modal a dialog title Add Tags a
  • 如何在 Dreamweaver 中使用 javascript 使元素固定在某个点

    我知道有很多与此类似的问题 但在 Dreamweaver 中似乎没有一个解决方案适合我 任何人都可以提供 JavaScript 代码或我可以轻松插入到 Dreamweaver 文件中的内容吗 我需要应用它的代码如下 div div
  • 原子别名交换在完全不相关的索引上失败并出现 index_not_found_exception

    我想以零停机时间进行替换和索引 如中所述ES 文档 https www elastic co guide en elasticsearch guide current index aliases html 我这样做是通过 创建一个新索引my
  • 如何使用 django-simple-history 恢复更改,特别是删除

    We have django simple history为我们的模型设置 最近一大堆模型被神秘删除 这是在事后几天注意到的 因此最好避免完整的数据库备份恢复 因为这会擦除事后发生的手动更改 我找不到任何方法来轻松恢复模型实例 特别是已删除
  • Tkinter 显示扭曲的图像

    我正在尝试使用 Tkinter 显示 gif 但是当 gif 加载时 它看起来很奇怪 我已经粘贴了原始 gif 和 Tkinter 中显示的 gif 的屏幕截图 这种情况不仅仅发生在一张 gif 中 而是出现在我使用的每一张 gif 中 G
  • 我们可以在 Android 中使用缩放手势检测器进行捏缩放吗?

    我们可以在 Android 中使用缩放手势检测器进行捏缩放吗 您可以创建一个可重用的类来实现OnTouchListener来实现这一目标 public class MyScaleGestures implements OnTouchList
  • 在 Windows/mingw 上,`fcntl(fd, F_GETFL) | 等价于什么? O_ACCMODE`?

    我正在 Windows 上用 Mingw 编译一个程序 如何获取打开的文件描述符的访问模式 根据Win32 hlp API提供了该功能BOOL GetFileInformationByHandle HANDLE hFile LPBY HAN
  • 无法编译 parquet-tools

    我克隆了存储库parquet mr from 这个链接 http git 20clone 20https github com Parquet parquet mr git 我想要建造的parquet tools正如所解释的here htt
  • Python file.write 创建额外的回车符

    我正在使用 python 将一系列 SQL 语句写入文件 模板字符串如下所示 store insert tinsert stores storenum values s 我像这样写入文件 for line in source line li
  • 如何衡量字符串之间的相似度?

    我有很多名字 我想获得唯一的名字 然而 由于拼写错误和数据不一致 名称可能写错 我正在寻找一种方法来检查字符串向量是否其中两个相似 例如 pres lt c Obama B Bush G W Obama B H Clinton W J 我想
  • 无法设计全授权工作

    我需要访问 google API 我试图让用户使用 Devise 2 1 1 和 Omniauth 使用 gemgoogle oauth2因为 OAuth2 是 Google 文档推荐的 不幸的是我无法让它工作 这是routes rb Te
  • Django - 按组注释加权平均值

    我有以下在 SalesRecord 上运行的模型管理器 def by variety and date self start date end date return self model objects filter date range
  • 用 Java 或其他方式发送 GET 和 POST 请求而没有响应

    是否可以使用 Java 或其他语言发出 GET 和 POST 请求 这样您就不必关心返回的内容 就像只是发送请求但不想收到任何响应 无论您是否关心回复 它都会被发送 HTTP 协议规范说它必须如此 如果您不关心响应 您的客户端可以在发送请求
  • 在Python中导入CAD对象并存储为数组

    我正在使用 Autodesk Fusion 360 对 3D 零件进行建模 参见下图 然后可以将其导出并保存为 step iges sat 或 smt 文件 我想要实现的目标是将这部分转换为Python中的3D numpy数组 数组的每个元
  • 使用环境覆盖 Spring Cloud Config 值

    有没有办法用另一个属性源 特别是系统环境 覆盖通过 Spring Cloud Config Server 设置的属性 我知道我可以通过循环来手动完成Environment对象的PropertySources 但如果我可以设置它以便boots
  • CMake - 如何获取目录名称中的倒数第二个?

    所以我有 get filename component a dir some file PATH get filename component a last dir a dir NAME 其中 a last dir 应该返回我的目录的最低级