繁体   English   中英

CMake Gcov c++ 创建错误的 .gcno 文件

[英]CMake Gcov c++ creating wrong .gcno files

我有一个 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

此外,它们与 src 文件不在同一文件夹中,它们位于:

project_root/src/ 

当我将报告文件移动到 src/ 文件夹并执行时

$ gcov main.cpp
main.gcno:cannot open notes file

但是我收到了那个错误信息。 所以我将.cpp.gcno.cpp.cdnacpp.o.gcno.gcda.o ,最后我得到以下内容:

gcov main.cpp
Lines executed:86.67% of 15
Creating 'main.cpp.gcov'

我有 50 多个文件,无法为每个文件手动执行此操作。

我需要能够为所有文件运行一次 gcov 并为所有文件生成报告。 我不在乎文件是在哪里生成的。

它正在生成报告文件:project_root/build/CMakeFiles/project.dir/

这是为“项目”可执行文件构建所有附加文件的目录。

但是它生成的文件有扩展名“.cpp.gcno”、“.cpp.gcda”和“.cpp.o”

这是因为 CMake 从.cpp源创建.cpp.o目标文件(您可能会看到运行 make VERBOSE=1 。根据-fprofile-arcs 选项的描述,数据文件具有后缀.cpp.gcno

此外,它们与 src 文件不在同一文件夹中

数据文件与目标文件在同一目录中创建。


实际上,创建的文件仍然有效,如果你打电话

gcov main.cpp.gcno

从包含.gcno文件的目录。

显然,添加扩展名以提供 .cpp.o 的标准 CMake 行为可以更改为使用以下方式替换扩展名以提供 .o :

set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE ON)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM