gcov未生成所有gcda文件
gcov not generating all gcda files
我已经尝试了很多我创建的解决方案,但都不起作用。我正在为一个项目编写一个新代码,但这个代码受到了很多硕士和博士学位的影响,他们不在乎让它变得可读。所以,确实有很多东西没有用,甚至没有用。
然后我开始讨论gcov和lcov,但在我生成.info文件并加载到lcovhtml之后,除了我的所有文件之外,它只跟踪主文件!甚至知道使用了许多其他函数和文件!
(真的很抱歉我的英语不好,我来自巴西亚马逊州的马瑙斯,英语说得不好!但我找了一个月的答案,尝试了很多事情,但都没有成功)
我的文件看起来像:
-src/
-core/
-Index.cpp/h
-PostingList.cpp/h
-PreProcessor.cpp/h
-methods/
...
-parser/
...
-run/
...
-structures/
...
-utils/
...
我在项目源目录中得到了一个CMakeFile.txt,看起来像这样:
cmake_minimum_required (VERSION 2.4)
project (queryProcessor)
include("${${PROJECT_NAME}_SOURCE_DIR}/globalVariables.cmake")
include_directories(${INCLUDES})
link_directories(${LIBS})
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
add_subdirectory(src)
add_executable(QueryProcessor src/run/queryProcessor.cpp)
target_link_libraries (QueryProcessor libQueryProcessor rt -fprofile-arcs)
add_definitions(-O2 )
src目录上的另一个如下:
aux_source_directory( utils UTILS )
aux_source_directory( parser PARSER )
aux_source_directory( methods METHODS )
aux_source_directory( structures STRUCTURES )
aux_source_directory( core CORE )
aux_source_directory( . SRC )
aux_source_directory( ../../libs-iw/indexer/include UTILS2 )
add_library( libQueryProcessor ${UTILS} ${UTILS2} ${SRC} ${PARSER} ${METHODS} ${STRUCTURES} ${CORE})
set(CMAKE_CXX_FLAGS "--coverage")
include ( ${${PROJECT_NAME}_SOURCE_DIR}/install.cmake )
任何帮助都将不胜感激,包括更好的CMakeFiles的建议,提前感谢
很抱歉耽误时间。
您需要编译程序中的每个源文件,并使用适当的选项来使用gcov。文档中提到了-fprofile-args -ftest-coverage
,但您可能还想使用其他与评测相关的选项。
因此,您需要按照"如何在cmake文件中添加链接器或编译标志?"中的建议,附加这些标志?在所有目标定义之前(即靠近主CMakeLists.txt
开头的某个地方)您可能需要添加一个CMake选项来同时控制这些标志:
option(USE_GCOV "Create a GCov-enabled build." OFF)
...
if (USE_GCOV)
set(GCC_COVERAGE_COMPILE_FLAGS "-fprofile-arcs -ftest-coverage")
set(GCC_COVERAGE_LINK_FLAGS "-lgcov")
endif()
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}" )
set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}" )
...
add_subdirectory(...)
add_library(....)
add_executable(....)
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 测试执行后缺少某些GCDA文件
- 使用CMAKE移动.GCDA文件
- 烦人的错误消息:无法合并以前的GCDA文件
- 混合C/C++程序中缺少C++文件的gcda文件,为所有源生成了gcno
- gcov未生成所有gcda文件
- GCOV 在添加 -rdynamic 标志(通过 gdb 调用__gcov_flush())后停止生成 GCDA 文件
- 在库中使用 __gcov_flush 不会强制其他模块生成 .gcda 文件
- 如何合并多个版本的 gcda 文件
- .gcda 文件在多次运行时不会合并