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.cdna
和 cpp.o
更改为 .gcno
、.gcda
和 .o
,最后我得到以下内容:
gcov main.cpp
Lines executed:86.67% of 15
Creating 'main.cpp.gcov'
我有 50 多个文件,无法对每个文件手动执行此操作。
我需要能够 运行 对所有文件执行一次 gcov 并为所有文件生成报告。我不关心文件是在哪里生成的。
It is generating the report files in: project_root/build/CMakeFiles/project.dir/
这是为 'project' 可执行文件构建所有附加文件的目录。
BUT the files it generates have extentions '.cpp.gcno', '.cpp.gcda' and '.cpp.o'
这是因为 CMake 从 .cpp
源创建了 .cpp.o
目标文件(您可能会看到 运行 生成 VERBOSE=1
。根据 -fprofile-arcs
option's description,数据文件有后缀 .cpp.gcno
.
Also, they are not in the same folder as the src files
数据文件与对象文件创建在同一目录中。
实际上,创建的文件仍然有效,如果您调用
gcov main.cpp.gcno
来自包含 .gcno
个文件的目录。
显然,添加扩展名的标准 CMake 行为 .cpp.o 可以更改为替换扩展名 .o 使用:
set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE ON)
我有一个 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.cdna
和 cpp.o
更改为 .gcno
、.gcda
和 .o
,最后我得到以下内容:
gcov main.cpp
Lines executed:86.67% of 15
Creating 'main.cpp.gcov'
我有 50 多个文件,无法对每个文件手动执行此操作。
我需要能够 运行 对所有文件执行一次 gcov 并为所有文件生成报告。我不关心文件是在哪里生成的。
It is generating the report files in: project_root/build/CMakeFiles/project.dir/
这是为 'project' 可执行文件构建所有附加文件的目录。
BUT the files it generates have extentions '.cpp.gcno', '.cpp.gcda' and '.cpp.o'
这是因为 CMake 从 .cpp
源创建了 .cpp.o
目标文件(您可能会看到 运行 生成 VERBOSE=1
。根据 -fprofile-arcs
option's description,数据文件有后缀 .cpp.gcno
.
Also, they are not in the same folder as the src files
数据文件与对象文件创建在同一目录中。
实际上,创建的文件仍然有效,如果您调用
gcov main.cpp.gcno
来自包含 .gcno
个文件的目录。
显然,添加扩展名的标准 CMake 行为 .cpp.o 可以更改为替换扩展名 .o 使用:
set(CMAKE_CXX_OUTPUT_EXTENSION_REPLACE ON)