【问题标题】:What is the right way to set MSVC_RUNTIME_LIBRARY for different configurations?为不同的配置设置 MSVC_RUNTIME_LIBRARY 的正确方法是什么?
【发布时间】:2020-07-14 17:21:37
【问题描述】:

在windows环境和Visual Studio 2019 IDE中,为Test_DebugDebug这两种不同的配置MSVC_RUNTIME_LIBRARY设置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>")

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

【问题讨论】:

  • "MultiThreaded$&lt;$&lt;CONFIG:Debug&gt;:Debug&gt;$&lt;$&lt;CONFIG:Test_Debug&gt;:Debug&gt;"?

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


【解决方案1】:

如果您在同一个set_target_properties 调用中设置任何属性两次,您覆盖之前的设置。因此,仅应用 last 设置:

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

如果要在配置为DebugTest_Debug时将MSVC_RUNTIME_LIBRARY设置为MultiThreadedDebug,可以使用ORlogical operator生成器表达式:

$<OR:conditions>

所以完整的表达式是:

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

【讨论】:

    猜你喜欢
    • 2016-05-14
    • 2020-01-24
    • 2010-11-11
    • 2013-09-06
    • 2017-12-17
    • 2012-03-18
    • 2017-10-25
    • 2021-12-06
    • 2012-02-19
    相关资源
    最近更新 更多