c++ - 覆盖 gcc9 和 lcov
问题描述
最近的操作系统升级使我的覆盖脚本惨遭失败。
lcov 1.13
gcov (GCC) 9.1.1
我的 CMake 中用于生成覆盖率数据的部分:
if ($ENV{COVERAGE})
message("Setting up for coverage")
enable_testing()
include(CodeCoverage)
setup_target_for_coverage(${PROJECT_NAME}_coverage tests coverage)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
endif ()
lcov
我在构建测试后发出
的命令:lcov --capture --directory build/ --output-file coverage.info
不幸的是,现在失败了:
Capturing coverage data from build/
Found gcov version: 9.1.1
Scanning build/ for .gcda files ...
geninfo: WARNING: no .gcda files found in build/ - skipping!
Finished .info-file creation
错误消息是有道理的,因为没有.gcda
文件 - 只有.gcno
文件。我不确定它们是否具有相同的目的和/或可以与lcov
.
我发出nm some_binary | grep gcov
了很多符号的形式:
00000000004b3520 d __gcov_._ZZZN6__pstl10__internal15__pattern_walk2IRKNS_9execution2v115parallel_policyEN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEENS8_IPiSD_EEZSt9transformIS6_SE_SG_ZN12_GLOBAL__N_150ParallelTransformTest_NoDataShouldReturnEmpty_Test8TestBodyEvEUlRKT_E_ENSt9enable_ifIXsrNS3_19is_execution_policyINSt5decayISK_E4typeEEE5valueET1_E4typeEOSK_T0_SY_SU_T2_EUlRS9_RiE_St17integral_constantIbLb0EEEESU_SX_SY_SY_SU_SZ_T3_S13_IbLb1EEENKUlvE_clEvENKUlSE_SE_E_clESE_SE_
所以我猜CMake仍然是正确的尝试给我覆盖数据。
gcc 7
如果我没记错的话,它工作得很好。
是否有新的解决方案/要发布的 CMake 标志/要发布的 lcov 标志?还是它现在坏了并且没有解决方法?或者也许我一直在做一些奇怪的事情?
解决方案
推荐阅读
- vulkan - 计算写入和传输同步
- c++ - 如何从 VTK 查看器中导出演员(点云、线、样条线)?
- php - 如何在 PHP 中将 CSV 文件写入并保存到服务器?
- python - 如何用它的位置改变Python中dict中键的值?
- javascript - 基于选择单选按钮的自定义角度验证
- python - Django queryset:如何排除具有满足条件的任何相关对象的对象
- excel - 如何将月和日四舍五入到最接近的月或半月
- firefox - Rich:fileUpload 在 JSF 版本 3.3.3 最终版中,1 个文件上传导致文件上传侦听器在 Firefox v69 中运行两次
- mysql - Connection to RDS MySql from ECS Fargate wordpress container times out
- wpf - 如何将国家/地区列表作为 XAML 中组合框的自动完成