CTestCoverageCollectGCOV¶
版本 3.2 中新增。
此模块旨在用于 CTest 仪表板脚本,并提供一个命令来生成包含代码覆盖率报告的 tarball。
在 CTest 脚本中使用以下命令加载此模块:
include(CTestCoverageCollectGCOV)
命令¶
此模块提供以下命令
- ctest_coverage_collect_gcov¶
运行
gcov并打包一个 tar 文件以供 CDash 使用ctest_coverage_collect_gcov( TARBALL <tar-file> [TARBALL_COMPRESSION <compression>] [SOURCE <source-dir>] [BUILD <build-dir>] [GCOV_COMMAND <gcov-command>] [GCOV_OPTIONS <options>...] [GLOB] [DELETE] [QUIET] )
此命令会在二进制树中找到的所有
.gcda文件上运行gcov,并将生成的.gcov文件打包到一个 tar 文件中,同时包含以下内容:data.json 文件,用于定义 CDash 使用的源目录和构建目录。
Labels.json 文件,指示在源文件上设置的任何
LABELS。uncovered 目录,包含由
CTEST_EXTRA_COVERAGE_GLOB找到的任何未覆盖的文件。
生成的 tar 文件可以使用
ctest_submit(CDASH_UPLOAD)命令提交给 CDash 进行显示。参数为
TARBALL <tar-file>指定用于后续上传到 CDash 的
.tar文件的位置。相对路径将根据顶级构建目录进行解释。TARBALL_COMPRESSION <compression>在 3.18 版本中新增。
为
TARBALL数据文件指定一个压缩算法。使用此选项可以减小上传到 CDash 的数据文件的大小。<compression>必须是GZIP、BZIP2、XZ、ZSTD、FROM_EXT中的一个,或者一个 CMake 会评估为FALSE的表达式。默认值为BZIP2。如果指定了
FROM_EXT,则会根据<tar-file>的文件扩展名压缩结果文件(例如,.tar.gz将使用GZIP压缩)。会生成压缩输出的文件扩展名包括.tar.gz、.tgz、.tar.bzip2、.tbz、.tar.xz和.txz。SOURCE <source-dir>指定构建的顶级源目录。默认为
CTEST_SOURCE_DIRECTORY的值。BUILD <build-dir>指定构建的顶级构建目录。默认为
CTEST_BINARY_DIRECTORY的值。GCOV_COMMAND <gcov-command>指定机器上
gcov命令的完整路径。默认为CTEST_COVERAGE_COMMAND的值。GCOV_OPTIONS <options>...指定要传递给 gcov 的选项。
gcov命令的运行方式为gcov <options>... -o <gcov-dir> <file>.gcda。如果未指定,则默认选项为-b -x。GLOB3.6 版本新增。
在
<build-dir>中递归搜索.gcda文件,而不是通过读取CMakeFiles/TargetDirectories.txt(CMake 在生成阶段生成的文件)来确定搜索位置。DELETE3.6 版本新增。
在将覆盖率文件打包到
.tar文件后将其删除。QUIET隐藏此命令通常会打印的非错误消息。
在 3.3 版本中添加: 增加了对
CTEST_CUSTOM_COVERAGE_EXCLUDE变量的支持。
示例¶
在 ctest -S 脚本中生成打包为 .tar.gz 文件的代码覆盖率数据
script.cmake¶include(CTestCoverageCollectGCOV)
ctest_coverage_collect_gcov(
TARBALL "${CTEST_BINARY_DIRECTORY}/gcov.tar.gz"
TARBALL_COMPRESSION "GZIP"
)