CMakeListsc常用路径详解

1. CMAKE_SOURCE_DIR

  • 含义:最顶层 CMakeLists.txt 所在的目录

  • 特点 :整个构建过程中永远不会改变

  • 指向 :运行 cmake 命令时指定的源代码目录

2. CMAKE_CURRENT_SOURCE_DIR

  • 含义 :当前正在处理的 CMakeLists.txt 所在的目录

  • 特点 :随着 CMake 递归处理子目录而动态变化

  • 指向:每个 CMakeLists.txt 文件自己的目录

3. PROJECT_SOURCE_DIR

  • 含义 :最近一次调用 project() 命令的 CMakeLists.txt 所在的目录

  • 特点 :每调用一次 project(),这个值就会改变

  • 指向:当前项目的根目录

4. CMAKE_CURRENT_LIST_DIR

  • 含义 :当前正在处理的 CMakeLists.txt 所在的目录(与 CMAKE_CURRENT_SOURCE_DIR 几乎相同)

  • 区别 :在 include() 或 add_subdirectory() 时行为略有不同,但大多数情况下相同

复制代码
~/work/                         
├── app/                                ← CMAKE_SOURCE_DIR
│   ├── CMakeLists.txt                  # project(ui)  ← PROJECT_SOURCE_DIR
│   └── test/
│       └── CMakeLists.txt              # ← CMAKE_CURRENT_SOURCE_DIR
│   └── src/ 
│        └── CMakeLists.txt 
│   └── include/
相关推荐
骑着蜗牛撵大象3273 天前
大模型 SDK 编译就崩?用 CMakeLists 把 httplib、JSON 与 OpenSSL 装配成可复用的 ChatServer
android·java·c++·http·json·cmake·大模型sdk
把我格子衫拿来14 天前
VTK 与 Qt 的 CMake 工程怎么组织?模块、工具链与二进制兼容排错
c++·qt·vtk·cmake·工程实践
JMchen20 天前
集成第三方 C/C++ 库到 Android NDK 项目:OpenCV 与 FFmpeg 实战指南
android·opencv·cmake
阿钱真强道1 个月前
15 嵌入式操作系统 | 库的下载、编译、安装与验证(libubox / ubus / uci)
ubuntu·cmake·uci·ubus·libubox
阿钱真强道1 个月前
22 嵌入式操作系统 | 串口命令行调试(socat / stty / printf / hexdump)
ubuntu·cmake·uci·ubus·libubox
五_谷_丰_登1 个月前
cmake脚本学习——持续更新
脚本·cmake
程序员老陆1 个月前
CMake 常用关键字与命令全景:从 set到 target_link_options的现代工程视角
c++·cmake·程序开发
idealzouhu1 个月前
现代 CMake 依赖管理详解:从构建树、Target 封装到 find_package 工作原理
c++·cmake
小王C语言2 个月前
cmake教程
c++·cmake
雾里看山2 个月前
源码目录、构建目录与 out-of-source build
c++·软件构建·cmake