使用meson生成C语言覆盖率报告找不到coverage_html目标如何解决
问题原因
- 目标名称拼写错误:官方指定的覆盖率目标名是
coverage-html(中划线连接),你执行命令时用的是coverage_html(下划线连接),命名不匹配导致meson无法找到对应目标。 - 缺失生成报告的依赖:生成html格式覆盖率报告需要提前安装
gcovr或者lcov+genhtml工具链,若初始化构建目录时未检测到对应依赖,meson不会生成coverage-html相关的构建目标。 - 构建参数未生效:如果初始化构建目录时没有正确添加
-Db_coverage=true参数,或者之前生成过不带覆盖率参数的构建目录,也会导致目标不存在。
解决步骤
- 先修正命令拼写,优先尝试执行:
meson compile coverage-html
- 如果仍报目标不存在,先安装对应依赖:
- Debian/Ubuntu 系系统:
# 方案1:安装轻量gcovr工具 sudo apt install gcovr # 方案2:安装lcov+genhtml工具链 sudo apt install lcov- RHEL/CentOS/Fedora 系系统:
# 方案1:安装轻量gcovr工具 sudo dnf install gcovr # 方案2:安装lcov+genhtml工具链 sudo dnf install lcov - 依赖安装完成后进入构建目录,更新配置确认覆盖率参数生效:
meson configure -Db_coverage=true
- 重新执行完整流程生成报告:
meson compile meson test meson compile coverage-html
生成的报告默认保存在构建目录下的meson-logs/coveragereport目录中,打开目录内的index.html即可查看完整覆盖率数据。
内容的提问来源于stack exchange,提问作者David Marcos
相关产品推荐
相关产品推荐

