cmake 相对路径转相对路径
时间: 2023-07-08 09:06:18 浏览: 291
相对路径转换工具
5星 · 资源好评率100%
我认为你可能想问的是相对路径转绝对路径或绝对路径转相对路径,因为相对路径转相对路径没有意义。以下是相对路径和绝对路径的定义:
- 相对路径:相对于当前工作目录或当前文件的路径。
- 绝对路径:从根目录开始的完整路径。
下面是如何在 CMake 中进行路径转换:
1. 相对路径转绝对路径:
使用 CMAKE_CURRENT_SOURCE_DIR 和 CMAKE_CURRENT_BINARY_DIR 变量可以获取当前 CMakeLists.txt 文件所在目录的绝对路径和编译目录的绝对路径。例如,假设你有以下目录结构:
```
project/
CMakeLists.txt
src/
main.cpp
```
你可以使用以下代码将相对路径 src/main.cpp 转换为绝对路径:
```
set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
set(SRC_FILE ${SRC_DIR}/main.cpp)
message("Absolute path of source file: ${SRC_FILE}")
```
2. 绝对路径转相对路径:
使用 CMAKE_CURRENT_SOURCE_DIR 和 CMAKE_CURRENT_BINARY_DIR 变量可以获取当前 CMakeLists.txt 文件所在目录的路径,然后使用 CMAKE_MAKE_ABSOLUTE_PATH 函数将绝对路径转换为相对路径。例如,假设你有以下目录结构:
```
project/
CMakeLists.txt
src/
main.cpp
```
你可以使用以下代码将绝对路径 /path/to/project/src/main.cpp 转换为相对路径 src/main.cpp:
```
set(ABS_FILE /path/to/project/src/main.cpp)
set(REL_FILE ${CMAKE_MAKE_ABSOLUTE_PATH(${ABS_FILE}, ${CMAKE_CURRENT_SOURCE_DIR})})
message("Relative path of source file: ${REL_FILE}")
```
阅读全文