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

如何通过CMake预设传递ctest的--test-action测试动作?

如何在CMake测试预设中定义--test-action memcheck

CMake测试预设(Test Presets)的官方Schema目前并没有直接支持配置--test-action这类运行时动作参数的字段,因为该参数属于ctest的临时执行指令,而非持久化的测试配置项。针对你的需求,这里提供几种可行的解决方式:

1. 调整命令行参数顺序(解决当前命令无效问题)

你之前执行的命令参数顺序有误,导致预设内容被忽略。正确的命令格式应该是先指定预设,再追加--test-action参数:

ctest --preset name_of_preset --test-action memcheck

ctest会优先加载预设中的配置,再执行后续的动作指令,这样就能同时应用预设配置和内存检查动作。

2. 封装自定义命令/脚本(简化重复执行)

如果需要频繁执行内存检查测试,可以封装一个自定义命令或脚本,避免每次手动输入长命令:

  • Shell别名(适用于Linux/macOS):
    在你的shell配置文件(如~/.bashrc或~/.zshrc)中添加:
    alias ctest-memcheck='ctest --preset name_of_preset --test-action memcheck'
    
    之后直接执行ctest-memcheck即可。
  • 批处理脚本(适用于Windows):
    创建ctest-memcheck.bat文件,内容如下:
    @echo off
    ctest --preset name_of_preset --test-action memcheck
    

3. 结合CMake自定义目标(集成到构建流程)

如果希望将内存检查测试集成到CMake构建流程中,可以在项目的CMakeLists.txt中添加自定义目标:

add_custom_target(memcheck
  COMMAND ctest --preset name_of_preset --test-action memcheck
  DEPENDS ${PROJECT_NAME}_tests  # 依赖你的测试目标,确保测试已构建
  COMMENT "Running memory check on tests..."
)

之后只需执行cmake --build --preset build_preset --target memcheck,就能自动构建测试并执行内存检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:10:25