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

使用CMake构建项目时如何禁用作为Git子模块的RtMidi示例编译

你对这段代码的判断是正确的:该CMake逻辑的顺序确实会导致无法通过全局BUILD_TESTING变量自动禁用示例构建。首先执行的option指令会直接将RTMIDI_BUILD_TESTING定义为默认值ON,后续的判断语句因为变量已经处于已定义状态,不会触发继承BUILD_TESTING的逻辑。

可选用以下解决方法:

  • 无需修改子模块代码(最推荐):在你项目的顶级CMakeLists.txt中,调用add_subdirectory(rtmidi)引入子模块之前,提前设置缓存变量强制覆盖默认配置:
    set(RTMIDI_BUILD_TESTING OFF CACHE BOOL "Disable RtMidi test/example builds" FORCE)
    
  • 配置阶段直接传参:执行CMake配置命令时手动传入参数禁用构建:
    cmake <你的构建目录路径> -DRTMIDI_BUILD_TESTING=OFF
    
  • 调整子模块CMake逻辑(不推荐,子模块更新会覆盖修改):将rtmidi的CMakeLists.txt中的配置顺序调整为优先继承全局配置,再定义option:
    # 调整后的逻辑
    if (NOT DEFINED RTMIDI_BUILD_TESTING OR RTMIDI_BUILD_TESTING STREQUAL "")
      set(RTMIDI_BUILD_TESTING ${BUILD_TESTING} CACHE BOOL "Build test programs")
    endif()
    option(RTMIDI_BUILD_TESTING "Build test programs" ${RTMIDI_BUILD_TESTING})
    
    if (RTMIDI_BUILD_TESTING)
        # Examples are built here
    endif()
    
    调整后如果父项目设置了BUILD_TESTING OFF,RtMidi会自动禁用示例构建,无需单独配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:15:03