【软件开发】CMake 学习笔记
【软件开发】CMake 学习笔记
CMake 指令
https://cmake.org/cmake/help/latest/manual/cmake.1.html
1 |
|
CMakeLists 指令
核心指令
通常必不可少的指令。
1 |
|
环境指令
用于描述开发环境
1 |
|
项目指令
针对单个项目的信息描述指令。
描述项目输出(必须要设置)
1 |
|
描述项目环境(指定完项目输出后才可用)
1 |
|
-
依赖项传递
PUBLIC
:使用该选项添加引用,引用的头文件将传染给使用该项目的其他项目。PRIVATE
:引用不具备传染性,其他使用该项目的项目可能要再次添加头文件引用。
除非项目已经将引用的库完全封装,希望后续的使用者不要再直接调用该引用的库时才该用
PRIVATE
,否则应设置为PUBLIC
。 -
全局项目设置
部分指令如果去除
target_
前缀和部分参数,可转为对所有项目的设置的指令。
逻辑指令
通过逻辑运算控制代码执行。
1 |
|
其他指令
工具指令
一些功能性的实用指令。
1 |
|
cmake_path
计算路径相关信息
1 |
|
file
文件相关处理,如统计复制等。
1 |
|
环境变量
仅写出部分通常只读的变量,需用户配置的变量见“环境指令”章节。
项目相关
<projectName>_VERSION_MAJOR
:声明项目时额外提供的主版本号。<projectName>_VERSION_MINOR
:声明项目时额外提供的次版本号。
目录相关
PROJECT_BINARY_DIR
:上次调用project()
的 CMakeLists 对应的构建目录。PROJECT_SOURCE_DIR
:上次调用project()
的 CMakeLists 对应的源目录。
注意:add_subdirectory()
不会影响以上两条变量的值。
CMAKE_SOURCE_DIR
:顶级 CMakeLists 的源目录。CMAKE_BINARY_DIR
:顶级 CMakeLists 的构建目录。CMAKE_CURRENT_SOURCE_DIR
:当前 CMakeLists 的源目录。CMAKE_CURRENT_BINARY_DIR
:当前 CMakeLists 的构建目录。
CMakePresets
https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html
“CMakePresets.json”是 CMake 的配置文件,存放在项目的根目录中,用于配置一些 CMake 构建选项。
示例内容如下:
1 |
|
配置完毕后生成时通过添加--preset
选项,如cmake --preset=<presetName>
指令使用。
使用技巧
-
仅添加些文件到 CMake 生成的解决方案文件夹中?
无法直接支持,但可使用
add_custom_target
指令间接实现:
https://stackoverflow.com/questions/20251829/is-it-possible-to-add-files-to-a-cmake-generated-solution-folder-in-visual-studi
参考资料
【软件开发】CMake 学习笔记
https://bdffzi-blog.pages.dev/posts/2795034225.html