尝试遵循this帖子中建议的最佳实践,我想在预设文件中设置可选标志,并在工具链/CMakelist中设置必需标志。具体来说
CMAKE_x_FLAGS
,但我认为这个问题适用于任何其他缓存变量。
工具链文件
set(CMAKE_CXX_FLAGS_INIT "-mthumb -mcpu=cortex-m4")
CMakeLists.txt
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
CMakePresets.json
{
"version": 3,
"configurePresets": [
{
"name": "debug",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"toolchainFile": "${sourceDir}/cmake/toolchain.cmake",
"cacheVariables": {
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_CXX_FLAGS": "-Wall -Wextra"
}
}
]
}
我的期望,如链接帖子中所述,是将预设变量附加到已指定的变量中。但是,工具链文件中指定的标志将被覆盖。
-Wall -Wextra -fno-exceptions
这可以通过 CMakeLists.txt 中的以下行来防止
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_INIT} ${CMAKE_CXX_FLAGS} -fno-exceptions")
在我看来这不是它应该工作的方式?所以我的问题是,我应该如何按照以下想法管理各种文件中的
CMAKE_CXX_FLAGS(_INIT)
?