You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CMake多配置生成器中获取构建配置变量(VS2019)

在VS2019多配置生成器环境下正确获取CMake构建类型的方法

在VS2019这类多配置生成器环境中,CMAKE_BUILD_TYPE是无效的——因为多配置生成器支持同时生成Debug、Release等多种配置,这个变量仅对Makefile这类单配置生成器生效。直接用它判断构建类型,会导致构建时指定的--config参数无法被正确识别。

原有代码的问题

下面的代码试图通过CMAKE_BUILD_TYPE选择对应的windeployqt脚本,但在多配置环境下无法根据构建时的--config参数动态调整:

if(USE_VCPKG)
    if (CMAKE_BUILD_TYPE STREQUAL "Debug")
    #if($<CONFIG:Debug>)
        find_program(TOOL_WINDEPLOYQT NAMES windeployqt.debug.bat )
    else()
        find_program(TOOL_WINDEPLOYQT NAMES windeployqt)
  endif()

构建命令:

cmake --build ./build --config Debug

修正方案:使用生成器表达式

改用CMake的生成器表达式,它会在构建阶段求值,能准确匹配当前的构建配置。修正后的代码如下:

if(USE_VCPKG)
       set(TOOL_WINDEPLOYQT "windeployqt")

       add_custom_command(TARGET Demo POST_BUILD
       COMMAND ${TOOL_WINDEPLOYQT}$<$<CONFIG:Debug,RelWithDebInfo>:.debug.bat>
               $<TARGET_FILE:Demo>
       COMMENT "Running windeployqt... "
  )
endif()

其中$<$<CONFIG:Debug,RelWithDebInfo>:.debug.bat>的作用是:当构建配置为Debug或RelWithDebInfo时,自动给windeployqt追加.debug.bat后缀;其他配置则使用原始的windeployqt命令。

内容的提问来源于stack exchange,提问作者Qiuren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 13:12:50