此答案描述了如何从头开始创建自定义配置类型。如何制作与 builtin 完全匹配的配置类型Release,仅添加一些标志?我现在正在使用这个:
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;ReleaseWithAssertions" CACHE STRING
"Available build-types: Debug, Release and ReleaseWithAssertions")
set(CMAKE_CXX_FLAGS_RELEASEWITHASSERTIONS "${CMAKE_CXX_FLAGS_RELEASE}
-DENABLE_ASSERTIONS=1")
Run Code Online (Sandbox Code Playgroud)
这似乎是我想要的,但我只是复制 的值CMAKE_CXX_FLAGS_RELEASE,所以我想知道是否有用户可能期望的我遗漏的东西?
不,不是关于添加与内置完全匹配的自定义“配置类型Release”。这更像是对 CMake的功能请求。
编辑:刚刚看到实际上有一个“为 MSVC 创建新配置”功能请求,您可以提供支持。
以下是一些可能的和不可能的背景信息:
可能存在许多特定于配置的变量。你可以用脚本复制那些:
get_directory_property(_vars VARIABLES)
foreach(_var IN LISTS _vars)
if (_var MATCHES "_RELEASE$")
string(REPLACE "_RELEASE" "_RELEASEWITHASSERTIONS" _var_new "${_var}")
set(${_var_new} "${${_var}}")
endif()
endforeach()
Run Code Online (Sandbox Code Playgroud)您需要使用设置将导入的目标映射到新配置 CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>:
list(APPEND CMAKE_MAP_IMPORTED_CONFIG_RELEASEWITHASSERTIONS "Release" "")
Run Code Online (Sandbox Code Playgroud)您无法对检查特定配置名称的$<CONFIG:cfg>类型生成器表达式做任何事情
您必须检查目录/目标/源文件和属性中的配置特定更改
参考