为不同的配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么?

时间:2020-07-14 17:21:37

标签: c++ visual-c++ cmake

在Windows环境和Visual Studio 2019 IDE中,为两个MSVC_RUNTIME_LIBRARY的两个不同配置Test_DebugDebug设置DEBUG_CONFIGURATIONS的正确方法是什么? 不知何故,这是行不通的:

add_executable(foo foo.c)
set_target_properties(foo PROPERTIES
  MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>"
  MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Test_Debug>:Debug>")

有人可以建议正确的方法吗?

1 个答案:

答案 0 :(得分:1)

如果您在同一set_target_properties调用中两次设置了任何属性,则会覆盖上一个设置。因此,仅应用最后设置:

MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Test_Debug>:Debug>"

如果要在配置为MSVC_RUNTIME_LIBRARYMultiThreadedDebug时将Debug设置为Test_Debug,则可以使用OR logical operator生成器表达式:

$<OR:conditions>

因此完整的表达式为:

set_target_properties(MyExe1 PROPERTIES
    MSVC_RUNTIME_LIBRARY 
        "MultiThreaded$<$<OR:$<CONFIG:Debug>,$<CONFIG:Test_Debug>>:Debug>"
)