簡體   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