我在我的项目中使用CMake并设置了一个用于连续/夜间构建的cdash服务器.一切运作良好,通过设置crontab,我们将每小时/每晚的构建/测试结果自动上传到我们的cdash服务器.
我的下一步是将测试覆盖率报告添加到构建中.我在http://www.cmake.org/Wiki/CTest:Coverage找到了这份文件,但坦率地说,它与实用指南相差甚远.
目前我已经添加了所需的标志(而不是-fprofile-arcs -ftest-coverage,我发现--coverage更好),编译过程生成.gcno文件.但后来我被卡住了.命令
make NightlyCoverage
Run Code Online (Sandbox Code Playgroud)
好像什么也没做.谁能告诉我接下来要做什么?我想要的结果是make NightlyCoverage,生成覆盖率报告并上传到cdash服务器.
我使用/维护了一些CMake项目,所以我开始检查CTest/CDash,但有些东西是我无法弄清楚的:
它只用于显示构建/测试结果吗?(又名美化原木)
或者:可以在服务器上部署夜间构建二进制文件吗?
尽管我认为CTest是测试CMake项目和显示测试结果的理想工具,但我还想在Web服务器上自动部署夜间构建,我想知道它是否是适合的工具.. .
我已经在我的本地机器上设置了 CDash,我正在使用 CTest 将测试结果上传到 CDash - 生成包含分支覆盖信息的 .gcov 文件并将它们预先打包到 gcov.tar (这是来自https的示例的修改版本://blog.kitware.com/additional-coverage-features-in-cdash/):
CMakeLists.txt:
cmake_minimum_required(VERSION 3.2)
project(branch_coverage_example)
add_executable(foo foo.cxx)
include(CTest)
add_test(NAME foo COMMAND foo)
include(BranchCoverage)
Run Code Online (Sandbox Code Playgroud)
我的 CMake 模块路径中的BranchCoverage.cmake:
if(${CMAKE_BUILD_TYPE} STREQUAL "Profiling")
option(ALWAYS_GENERATE_BRANCH_COVERAGE_INFO "Run gcov branch coverage as part of the ALL target" ON)
if(ALWAYS_GENERATE_BRANCH_COVERAGE_INFO)
add_custom_target(BranchCoverage)
add_custom_command(TARGET BranchCoverage
POST_BUILD
COMMAND ${CMAKE_CTEST_COMMAND} -D ExperimentalSubmit -S cdash_tarball.cmake
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Generating gcov.tar containing branch coverage info..."
)
add_dependencies(BranchCoverage Experimental)
endif()
endif()
Run Code Online (Sandbox Code Playgroud)
CTestConfig.cmake:
## This file should be placed in …Run Code Online (Sandbox Code Playgroud)