这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » 关于cmakelist特性presets的使用

共1条 1/1 1 跳转至

关于cmakelist特性presets的使用

助工
2026-01-05 22:32:00   被打赏 20 分(兑奖)     打赏

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项目

image.png

命令: cmake --preset Debug 

配置项目

image.png

命令: cmake --build --preset Debug

编译生成固件image.png

2,vscode

安装cmake tool插件,点点就完事。

image.png

清空缓存

cmake --build pathto/build/ --target clean


三、效果

简单找一个demo测试了一下效果,确实容易了很多,不需要输入很多配置参数,通过presets文件,可以定制化的实现配置,只是需要输入项目名,即可激活各种项目的配置,生成固件。

presets很好用。







共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]