【发布时间】:2016-08-25 08:17:39
【问题描述】:
我已经尝试了很多我创建的解决方案,但都没有奏效。我正在为一个项目编写一个新代码,但是这个代码被很多不关心使其可读的硕士和博士学位所触及。所以确实有很多东西没有用,甚至没有用。
然后我开始讨论 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; make VERBOSE=1切换到详细模式并仔细检查编译器和链接器调用标志。 -
另外,在定义新目标或添加子目录之前移动所有编译标志操作是明智的。
-
感谢@user3159253!现在已经移动标志操作并仔细阅读详细输出。一个文件到另一个文件的唯一区别是在链接 CXX 可执行文件时,它有一个 -fprofile-arcs 参数,这是每个 cpp 都需要的参数吗?
-
@thomazandrade 你应该试试pt.stackoverflow.com。它是葡萄牙语(em Português)。你的英语还不错,但我想你在那里可能会更舒服:)