CMake 常见路径变量和命令总结

CMake 常见路径变量和命令总结

常用路径变量

  1. **CMAKE_SOURCE_DIR**:项目的根目录,即包含顶层 CMakeLists.txt 文件的目录。
  2. **CMAKE_BINARY_DIR**:构建目录,即运行 cmake 命令的目录。
  3. **PROJECT_SOURCE_DIR**:当前项目的源代码目录。
  4. **PROJECT_BINARY_DIR**:当前项目的构建目录。
  5. **CMAKE_CURRENT_SOURCE_DIR**:当前处理的 CMakeLists.txt 文件所在的目录。
  6. **CMAKE_CURRENT_BINARY_DIR**:当前处理的 CMakeLists.txt 文件的构建目录。
  7. **CMAKE_INSTALL_PREFIX**:安装路径前缀,默认是 /usr/local

常用命令

  1. **include_directories**:添加头文件搜索路径。
  2. **link_directories**:添加库文件搜索路径。
  3. **add_executable**:添加可执行文件。
  4. **add_library**:添加库文件。
  5. **target_include_directories**:为目标添加头文件搜索路径。
  6. **target_link_libraries**:为目标添加链接库。

示例

假设你的项目结构如下:

1
2
3
4
5
6
/path/to/your/project
├── CMakeLists.txt
├── include
│ └── noncopyable.h
└── test
└── test_noncopyable.cpp

可以在 CMakeLists.txt 文件中使用这些路径变量和命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
cmake_minimum_required(VERSION 3.10)
project(MuduoBase)

# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 添加头文件搜索路径
include_directories(${PROJECT_SOURCE_DIR}/include)

# 添加 INTERFACE 库
add_library(muduo_base INTERFACE)
target_include_directories(muduo_base INTERFACE ${PROJECT_SOURCE_DIR}/include)

# 启用测试
enable_testing()

# 添加测试可执行文件
add_executable(test_noncopyable test/test_noncopyable.cpp)

# 链接 INTERFACE 库
target_link_libraries(test_noncopyable muduo_base)

# 添加测试
add_test(NAME TestNoncopyable COMMAND test_noncopyable)

生成和运行测试

在项目根目录中运行以下命令生成和运行测试:

1
2
3
4
5
mkdir build
cd build
cmake ..
make
ctest

CMake 常见路径变量和命令总结
https://linhanmic.github.io/2024/09/12/CMake基本命令/
作者
Linhanmic
发布于
2024年9月12日
更新于
2024年9月14日
许可协议