CTestCoverageCollectGCOV¶
版本 3.2 中新增。
此模块旨在用于 CTest 仪表板脚本,并提供一个命令来生成包含代码覆盖率报告的 tarball。
使用以下命令在 CTest 脚本中加载此模块:
include(CTestCoverageCollectGCOV)
命令¶
此模块提供以下命令
- ctest_coverage_collect_gcov¶
运行
gcov
并为 CDash 打包 tar 文件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
。GLOB
3.6 版本新增。
在
<build-dir>
中递归搜索.gcda
文件,而不是通过读取CMakeFiles/TargetDirectories.txt
(CMake 在生成阶段生成的文件)来确定搜索位置。DELETE
3.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"
)