cmake版本有要求,cmake3.xx以上
一、presets
什么是presets?
CMake Presets 是一组可以保存在文件中的预定义配置,用于自动化CMake的配置、构建、测试、打包等步骤。您可以把它们看作是项目的“预设菜单”或“快捷方式”。
作用是什么?
1. 简化命令行操作:将复杂的命令行参数封装成一个简单的预设名称。
2. 保证一致性:确保团队中所有开发人员、CI/CD服务器都使用完全相同的配置进行构建,避免“在我机器上是好的”这类问题。
3. 管理多种配置:轻松管理项目的不同变体,例如:debug和 release
4. 针对不同平台(Windows、Linux、macOS)使用不同生成器(Visual Studio, Ninja, Makefile)包含不同功能选项的版本
5. IDE/编辑器集成:现代IDE(如VS Code、CLion、Visual Studio)和编辑器都能直接识别CMake Presets文件,并自动提供配置选项列表,让开发者一键切换,无需手动配置。
组成部分
包括两种文件:CMakePresets.json,CMakeUserPresets.json。
CMakePresets.json:是要为与机器无关的配置,构建目录、生成器、缓存变量、环境变量等,比如CMAKE_BUILD_TYPE, CMAKE_CXX_STANDARD, 项目特定的功能开关
CMakeUserPresets.json:与机器或者个人相关的配置,例如本地工具链路径、个人偏好、或需要访问本地绝对路径的设置,是对CMakePresets.json的补充。
可以理解为:CMakePresets.json描述“要构建什么”,CMakeUserPresets.json描述“用我本地环境里的什么工具来构建”。
简单示例
{
"version": 8,
"configurePresets": [
{
"name": "default",
"displayName": "Default Debug",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"MY_PROJECT_USE_FEATURE_X": "ON"
}
},
{
"name": "release",
"displayName": "Release Build",
"inherits": "default",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
}
],
"buildPresets": [
{
"name": "debug-build",
"configurePreset": "default"
},
{
"name": "release-build",
"configurePreset": "release"
}
]
}二、如何使用
1,linux命令行
命令: cmake --list-presets
查看已配置的presets项目

命令: cmake --preset Debug
配置项目

命令: cmake --build --preset Debug
编译生成固件
2,vscode
安装cmake tool插件,点点就完事。

清空缓存
cmake --build pathto/build/ --target clean
三、效果
简单找一个demo测试了一下效果,确实容易了很多,不需要输入很多配置参数,通过presets文件,可以定制化的实现配置,只是需要输入项目名,即可激活各种项目的配置,生成固件。
presets很好用。
我要赚赏金
