我有一个CMakeLists.txt文件,我在其中添加了如下内容:
set(CMAKE_CXX_FLAGS "-fprofile-arcs -ftest-coverage -pthread -std=c++11 -O0 ${CMAKE_CXX_FLAGS}")
它正在以下位置生成报告文件:
project_root/build/CMakeFiles/project.dir/
但是它生成的文件扩展名为.cpp.gcno
、.cpp.gcda
和.cpp.o
。
此外,它们不在与源文件相同的文件夹中,源文件位于:
project_root/src/
当我将报告文件移动到src/文件夹并执行时。
$ gcov main.cpp
main.gcno:cannot open notes file
但是我收到了这个错误信息。所以我将.cpp.gcno
,.cpp.cdna
和cpp.o
更改为.gcno
,.gcda
和.o
,最终得到如下结果:
gcov main.cpp
Lines executed:86.67% of 15
Creating 'main.cpp.gcov'
我有超过50个文件,无法手动处理每一个文件。
我需要能够一次性运行gcov,为所有文件生成报告。我不在乎文件在哪里生成。
gcov *.gcno
,这样它就会一次性收集目录中的所有数据文件。如何避免 stl 文件(例如 "stl_map.h")和我的项目头文件的报告?我不知道简单的方法来做到这一点。(复杂的方法是解析 gcov 输出的中间格式并删除与头文件相关的所有内容)。您可以在 Stack Overflow 上提出另一个关于此问题的问题。 - Tsyvarev