This answer描述了如何从头开始创建自定义配置类型。我怎样才能创建一个与内置 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")
这似乎符合我的要求,但我只是复制了 CMAKE_CXX_FLAGS_RELEASE
的值,所以我想知道我是否遗漏了用户可能期望的任何内容?
最佳答案
不,不是关于添加自定义“与内置 Release
完全匹配的配置类型”。这更像是 feature request for CMake .
编辑:刚刚看到实际上有一个"Creating new configurations for MSVC" feature request你可以给予支持。
以下是一些可能的和不可行的背景信息:
可能有许多特定于配置的变量。您可以使用脚本复制它们:
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()
您需要使用设置
CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>
将导入的目标映射到您的新配置:list(APPEND CMAKE_MAP_IMPORTED_CONFIG_RELEASEWITHASSERTIONS "Release" "")
你不能对
$<CONFIG:cfg>
做任何事输入 generator expressions检查特定的配置名称您必须在 properties 中检查目录/目标/源文件和配置特定更改
引用资料
关于c++ - 如何创建继承自 Release 的 CMake 配置类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43746829/