如何通过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
相关产品推荐
相关产品推荐

