CMake笔记之通过指定相对路径来访问任意上级或跨级目录的常用方法

本文介绍了如何在CMake中通过set和get_filename_component函数结合基准目录来访问上级或跨级目录,同时强调了使用绝对路径和推荐从已知基准如CMAKE_SOURCE_DIR或CMAKE_BINARY_DIR构建路径的重要性,以提高脚本的可移植性和可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CMake笔记之通过指定相对路径来访问任意上级或跨级目录的常用方法

code review!

参考博文:CMake笔记之PROJECT_SOURCE_DIR、CMAKE_SOURCE_DIR、CMAKE_CURRENT_BINARY_DIR对比

1.set结合基准目录设置

注意:目录分隔符(在 Unix 系统中是 / ,在 Windows 系统中是 \)

set(PARENT_DIR "${CMAKE_SOURCE_DIR}/../..")

这里,${CMAKE_SOURCE_DIR} 是一个绝对路径,我们在其后添加了 /../.. 来访问上两级目录。然后,这个新计算出的路径被存储在变量 PARENT_DIR 中。

2.get_filename_component结合基准目录设置

使用 get_filename_component 命令来处理路径,这样可以避免潜在的跨平台问题:

get_filename_component(PARENT_DIR "${CMAKE_SOURCE_DIR}/../.." ABSOLUTE)

这会将 PARENT_DIR 设置为 CMAKE_SOURCE_DIR 的上两级目录的规范化绝对路径。使用 ABSOLUTE 选项可以确保即使存在符号链接,路径也会被正确解析。

请注意,使用 ../.. 来访问上级目录是不推荐的做法,因为它使得 CMake 脚本的可移植性和可读性变差。如果可能,尽量避免这样做,并且始终从一个已知的、可靠的基准目录(如 CMAKE_SOURCE_DIRCMAKE_BINARY_DIR)开始构造你的路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只野生的善逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值