我有一个CMakeLists.txt文件,其中我添加了:
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
当我将报告文件移动到src /文件夹并执行
时.cpp.gcno
但是我收到了错误消息。所以我将.cpp.cdna
,cpp.o
和.gcno
更改为.gcda
,.o
和gcov main.cpp
Lines executed:86.67% of 15
Creating 'main.cpp.gcov'
,最后我得到以下内容:
{{1}}
我有超过50个文件,并且不能为每个文件手动执行此操作。
我需要能够为所有文件运行一次gcov并为所有文件生成报告。我不关心文件的生成位置。
答案 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)