我已经尝试了很多我创建的解决方案,但都没有工作。我正在为一个项目编写一个新的代码,但是这个代码被许多不关心让它重现的硕士和博士学位所触动。所以有很多事情没有用,甚至没有用过。gcov不生成所有gcda文件
然后我头脑gcov和lcov,但生成.info文件并加载到lcov html后,除了我所有的文件,它只是跟踪主文件!即使知道很多其他功能和文件也被使用了!
(实在对不起我的英文不好,马瑙斯,亚马逊即时消息 - 巴西,而不是一个良好的英语的人,但香港专业教育学院寻找这个答案也不像一个月尝试了很多东西,但没有得到运气的)
我的文件看起来像:
-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建议, 在此先感谢
是否有libQueryProcessor对象文件实际上已经用适当的标志编译?使用'make clean;使VERBOSE = 1'切换到详细模式并仔细检查编译器和链接器调用标志。 – user3159253
此外,在定义新目标或添加子目录之前移动所有编译标志操作是明智的。 – user3159253
谢谢@ user3159253!现在已经移动了标志操作并仔细研究了详细输出。从一个文件到另一个文件的唯一区别是当链接CXX可执行文件时它有一个-fprofile-arcs参数,这是每个cpp都需要的吗? –