cmake 相对路径转绝对路径
时间: 2023-07-08 11:06:18 浏览: 54
在CMake中,使用`get_filename_component`函数可以将相对路径转换为绝对路径。以下是一个示例代码:
```cmake
# 定义相对路径变量
set(RELATIVE_PATH "../example")
# 将相对路径转换为绝对路径
get_filename_component(ABSOLUTE_PATH ${RELATIVE_PATH} ABSOLUTE)
# 打印结果
message("Relative path: ${RELATIVE_PATH}")
message("Absolute path: ${ABSOLUTE_PATH}")
```
在这个例子中,我们首先定义了一个相对路径变量`RELATIVE_PATH`,它指向一个名为`example`的目录,该目录位于当前CMakeLists.txt文件的上一级目录。然后,使用`get_filename_component`函数将相对路径转换为绝对路径,并将结果存储在`ABSOLUTE_PATH`变量中。最后,使用`message`函数打印结果。
相关问题
cmake 相对路径转相对路径
我认为你可能想问的是相对路径转绝对路径或绝对路径转相对路径,因为相对路径转相对路径没有意义。以下是相对路径和绝对路径的定义:
- 相对路径:相对于当前工作目录或当前文件的路径。
- 绝对路径:从根目录开始的完整路径。
下面是如何在 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}")
```
cmake x相对路径转绝对路径
在 CMake 中,可以使用 `CMAKE_CURRENT_SOURCE_DIR` 和 `CMAKE_CURRENT_BINARY_DIR` 变量来获取当前 CMakeLists.txt 所在的源码目录和构建目录的绝对路径。假设要获取源码目录下的一个名为 `file.txt` 的文件的绝对路径,可以使用以下命令:
```
set(FILE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/file.txt")
```
如果要获取构建目录下的一个名为 `output.txt` 的文件的绝对路径,可以使用以下命令:
```
set(OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}/output.txt")
```
这样就可以将相对路径转换为绝对路径了。