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

如何修改CTest默认测试报告路径并按时间生成不同目录?

修改CTest测试报告路径并按时间生成独立目录

实现方案

要自定义测试报告路径且按时间生成独立目录,需从CMake配置和CTest运行参数两方面配合操作:

1. 基础路径配置(CMakeLists.txt)

在项目根目录的CMakeLists.txt中添加以下配置,指定测试报告的根路径(示例为构建目录下的test-reports):

# 启用测试模块
enable_testing()

# 开启测试失败时输出详情(可选,便于调试)
set(CTEST_OUTPUT_ON_FAILURE ON)
# 指定测试报告根目录,CMAKE_BINARY_DIR对应你的out构建目录
set(CTEST_REPORT_DIR "${CMAKE_BINARY_DIR}/test-reports")

2. 动态生成时间戳目录(运行CTest时)

无需修改CMake配置,直接通过CTest的--output-dir参数结合系统时间戳命令,生成按时间命名的子目录:

# 进入构建目录
cd out
# 生成YYYYMMDD-HHMMSS格式的时间戳
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
# 运行CTest,指定输出目录为时间戳子目录
ctest --output-dir "test-reports/${TIMESTAMP}"

3. 可选:集成时间戳到CMake(一键生成)

如果不想每次手动生成时间戳,可在CMakeLists.txt中预定义时间戳变量,自动生成带时间的报告目录:

enable_testing()

# 生成当前时间戳(格式可自行调整)
string(TIMESTAMP TIMESTAMP "%Y%m%d-%H%M%S")
# 直接设置带时间戳的完整报告路径
set(CTEST_REPORT_DIR "${CMAKE_BINARY_DIR}/test-reports/${TIMESTAMP}")

# 添加你的测试用例(假设main.c编译为测试可执行文件)
add_executable(my_test main.c)
add_test(NAME my_test COMMAND my_test)

配置完成后,直接在out目录运行ctest即可自动生成对应时间戳的报告目录。

验证方式

运行CTest后,前往out/test-reports/[对应时间戳]目录,即可找到生成的测试报告文件,替代默认的Testing/Temporary路径。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:32:35