1
  • CMakePresets.json 文件:
    • 配置构建执行工具(ninja):"generator": "Ninja"
    • 说明交叉编译使用的工具(文件):"toolchainFile": "${sourceDir}/cmake/arm-none-eabi.cmake",
{
  "version": 6,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 20,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "debug",
      "displayName": "STM32F103C8 Debug",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build/debug",
      "toolchainFile": "${sourceDir}/cmake/arm-none-eabi.cmake",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_MAKE_PROGRAM": "${sourceDir}/ninja/ninja.exe"
      }
    },
    {
      "name": "release",
      "displayName": "STM32F103C8 Release", //显示的构建名称
      "inherits": "debug", //继承上面debug的信息,这里相同的配置项会覆盖上面内容
      "binaryDir": "${sourceDir}/build/release", //构建生成的文件的存放路径
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release"
      }
    }
  ],
  "buildPresets": [ //真正用于执行构建的。
    {
      "name": "debug",  //构建时cmake --preset debug
      "configurePreset": "debug" //使用configurePreset的debug配置
    },
    {
      "name": "release",//构建时cmake --preset release
      "configurePreset": "release"
    }
  ]
}

cmake构建的时候使用这个文件,意思是构建的时候,使用debug的方式

cmake --preset debug
cmake --build --preset debug

VS Code CMake Tools因为配置了:

.vscode/settings.json

{
    "cmake.sourceDirectory": "${workspaceFolder}/002-arm-demo",
    "cmake.useCMakePresets": "always", //cmake插件就会识别到 CMakePresets.json中的buildPresets项
    "cmake.configureOnOpen": true
}