cmake 使用相对路径
时间: 2023-12-30 22:23:16 浏览: 41
在CMake中,可以使用相对路径来指定源文件和其他文件的位置。相对路径是相对于当前CMakeLists.txt文件所在的目录来解析的。
下面是一个示例,演示如何在CMake中使用相对路径来指定源文件的位置:
```cmake
cmake_minimum_required(VERSION 3.10)
project(MyProject)
# 设置源文件的相对路径
set(SOURCES
src/main.cpp
src/utils.cpp
)
# 添加可执行文件并指定源文件
add_executable(MyExecutable ${SOURCES})
```
在上面的示例中,源文件`main.cpp`和`utils.cpp`位于`src`目录下。通过设置相对路径`src/main.cpp`和`src/utils.cpp`,我们可以告诉CMake源文件的位置。
请注意,相对路径是相对于当前CMakeLists.txt文件所在的目录来解析的。因此,确保CMakeLists.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}")
```
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")
```
这样就可以将相对路径转换为绝对路径了。