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

CMake MSVC如何仅为Debug配置添加自定义构建命令

仅为Debug配置添加自定义命令的实现方案

通用适配方案(兼容所有生成器,推荐)

使用CMake条件生成器表达式限定命令生效范围,可同时适配Visual Studio、XCode等多配置生成器,以及Makefile、Ninja等单配置生成器,仅Debug配置下会执行复制命令,其余配置完全不注入该命令逻辑:

if (MSVC)
    add_custom_command(TARGET my_target PRE_BUILD
        COMMAND $<$<CONFIG:Debug>:${CMAKE_COMMAND} -E copy ${src} ${dst}>
    )
endif()

其中$<$<CONFIG:Debug>:[命令内容]>是CMake内置的条件生成器表达式,仅当当前构建配置为Debug时,才会将冒号后的命令内容写入构建规则,其余配置下该表达式会展开为空,等效于不存在这条命令。

单配置生成器专用方案

如果你仅使用Makefile、Ninja这类在配置阶段就固定构建类型的单配置生成器,也可以直接判断CMAKE_BUILD_TYPE变量实现需求:

if (MSVC AND CMAKE_BUILD_TYPE STREQUAL "Debug")
    add_custom_command(TARGET my_target PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${src} ${dst}) 
endif()

注意该方案不适用于多配置生成器,多配置生成器的CMAKE_BUILD_TYPE变量在配置阶段无实际生效值,构建配置是在构建阶段由用户手动选择的。

额外提示

  • 如果src或dst路径包含空格、特殊字符,建议使用$<SHELL_PATH:包裹路径避免解析错误,示例如下:
    COMMAND $<$<CONFIG:Debug>:${CMAKE_COMMAND} -E copy $<SHELL_PATH:${src}> $<SHELL_PATH:${dst}>>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:27:00