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

时间:2016-06-22 20:50:08

标签: c++ cmake gcov

我有一个CMakeLists.txt文件,其中我添加了:

project_root/build/CMakeFiles/project.dir/

它正在生成报告文件:

.cpp.gcno

但它生成的文件有.cpp.gcda.cpp.oproject_root/src/

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

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

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

.cpp.gcno

但是我收到了错误消息。所以我将.cpp.cdnacpp.o.gcno更改为.gcda.ogcov main.cpp Lines executed:86.67% of 15 Creating 'main.cpp.gcov' ,最后我得到以下内容:

{{1}}

我有超过50个文件,并且不能为每个文件手动执行此操作。

我需要能够为所有文件运行一次gcov并为所有文件生成报告。我不关心文件的生成位置。

2 个答案:

答案 0 :(得分:4)

  

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

这是为' project'构建所有其他文件的目录。可执行文件。

  

但它生成的文件有扩展名' .cpp.gcno',' .cpp.gcda'和' .cpp.o'

这是因为CMake从.cpp.o来源创建.cpp对象文件(您可能会看到正在运行make VERBOSE=1。根据-fprofile-arcs option's description,数据文件后缀为.cpp.gcno

  

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

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

实际上,如果你打电话

,创建的文件仍然有用
gcov main.cpp.gcno

来自包含.gcno个文件的目录。

答案 1 :(得分:4)

显然,可以使用以下命令将添加扩展名以.cpp.o的标准CMake行为更改为替换扩展名以.cpp.o。

set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE ON)