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_DIR
或 CMAKE_BINARY_DIR
)开始构造你的路径。