cmake获取文件的绝对路径
时间: 2023-10-08 22:12:24 浏览: 207
可以使用CMake中的`get_filename_component`函数来获取文件的绝对路径。
例如,要获取当前CMakeLists.txt文件的绝对路径,可以使用以下代码:
```
get_filename_component(CMAKE_CURRENT_LIST_DIR_ABSOLUTE "${CMAKE_CURRENT_LIST_DIR}" ABSOLUTE)
```
其中,`CMAKE_CURRENT_LIST_DIR`是当前CMakeLists.txt文件所在的目录,`CMAKE_CURRENT_LIST_DIR_ABSOLUTE`是获取到的绝对路径。
相关问题
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")
```
这样就可以将相对路径转换为绝对路径了。
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}")
```
阅读全文