标签: cmake-presets

CMakePresets.json 与 CMakeSettings.json 与 CMakeLists.txt

我用谷歌搜索了一下,但没有找到任何真正令人满意的东西。有很多关于如何使用它们的教程,但我很难理解一个最适合特定项目。

我不太清楚,对于他们每个人,我应该用来做什么。据我了解(这可能不正确),它们在某些功能上都有重叠,例如定义环境或 CMake 变量。

我通常的理解是 和CMakePresetsCMakeSettingsMicrosoft工具(也许工具不是正确的词,但我想不出更好的词),用于在 MS IDE(VS 和 VSCode)中集成 CMake 项目。他们如何应对CMakeLists以及各自的范围是什么?

cmake cmake-presets

11
推荐指数
2
解决办法
6160
查看次数

如何在 CMakePresets 中指定环境变量的默认值

使用文档时CMakePresets.json可以使用$env{<variable-name>}$penv{<variable-name>}来查询环境变量。

如果没有设置环境变量,是否可以指定默认值?

笔记:

  • 由于我尝试设置的变量也在预设内,因此我无法在 CMake 脚本内处理该问题。
  • 如果不支持默认值,是否有任何解决方法可以在预设文件中实现相同的效果?

cmake cmake-presets

5
推荐指数
0
解决办法
1270
查看次数

合并和/或覆盖 CMakePresets.json 中不同配置预设的标志

我的 CMakePresets.json 中有两个配置预设,我想将继承 configurePresets (gcc) 的标志与另一个预设 (gcc-arm-embedded) 合并

这是一个简化版本:

  "configurePresets": [
    {
      "name": "gcc",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_CXX_FLAGS": "-Wall -Wextra",
        "CMAKE_BUILD_TYPE": "Release"
      }
    },
    {
      "name": "gcc-arm-embedded",
      "hidden": true,
      "inherits": ["gcc"],
      "cacheVariables": {
        "CMAKE_CXX_FLAGS": "-ffunction-sections -fdata-sections",
        "CMAKE_EXE_LINKER_FLAGS": "-mcpu=cortex-m7 -mthumb",
        "CMAKE_BUILD_TYPE": "MinSizeRel"
      }
    },
    {
      "name": "embedded",
      "inherits": ["gcc", "gcc-arm-embedded"]
    }
  ]
Run Code Online (Sandbox Code Playgroud)

问题是,如果我使用预设,embedded生成的 CMAKE 标志为:

CMAKE_CXX_FLAGS: "-Wall -Wextra"
CMAKE_EXE_LINKER_FLAGS: "-mcpu=cortex-m7 -mthumb",
CMAKE_BUILD_TYPE: "Release"
Run Code Online (Sandbox Code Playgroud)

我的目标是这样的:

CMAKE_CXX_FLAGS: "-Wall -Wextra -ffunction-sections -fdata-sections"
CMAKE_EXE_LINKER_FLAGS: "-mcpu=cortex-m7 -mthumb",
CMAKE_BUILD_TYPE: "MinSizeRel"
Run Code Online (Sandbox Code Playgroud)

这可以通过 CMakePresets 实现吗?

c++ cmake cmake-presets

3
推荐指数
1
解决办法
1371
查看次数

标签 统计

cmake ×3

cmake-presets ×3

c++ ×1