我用谷歌搜索了一下,但没有找到任何真正令人满意的东西。有很多关于如何使用它们的教程,但我很难理解哪一个最适合特定项目。
我不太清楚,对于他们每个人,我应该用来做什么。据我了解(这可能不正确),它们在某些功能上都有重叠,例如定义环境或 CMake 变量。
我通常的理解是 和CMakePresets
是CMakeSettings
Microsoft工具(也许工具不是正确的词,但我想不出更好的词),用于在 MS IDE(VS 和 VSCode)中集成 CMake 项目。他们如何应对CMakeLists
以及各自的范围是什么?
使用文档时CMakePresets.json
,我可以使用$env{<variable-name>}
或$penv{<variable-name>}
来查询环境变量。
如果没有设置环境变量,是否可以指定默认值?
笔记:
我的 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 实现吗?