gpt4 book ai didi

c++ - 如何在 Cmake 中使用 gcov

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:43:10 25 4
gpt4 key购买 nike

我在遵循本指南(我在另一篇文章中看到的推荐)时遇到困难 https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake

首先:

Copy this file into your cmake modules path.

我怎么知道我的 cmake 模块路径是什么?

Use the function SETUP_TARGET_FOR_COVERAGE to create a custom make target

具体是什么意思?我怎么做?具体来说,我必须在何处输入什么?

我被迫使用 cmake 编译应用程序,否则我会使用 gcc。

最佳答案

您可以通过调用来设置 cmake 模块路径 set(CMAKE_MODULE_PATH <path>)

cmake 模块路径设置告诉 cmake 在哪里寻找 cmake 模块,例如 include 中包含的模块。宏。

比如我使用CodeCoverage.cmake的步骤是:

  1. 将 CodeCoverage.cmake 复制到我的“scripts/cmake”源文件夹中。
  2. 将以下内容添加到我的 CMakeLists.txt:

    set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake)

    if (CMAKE_BUILD_TYPE STREQUAL "Coverage")
    include(CodeCoverage)
    setup_target_for_coverage(${PROJECT_NAME}_coverage ${TEST_TARGET} coverage)

    SET(CMAKE_CXX_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
    SET(CMAKE_C_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
    endif() #CMAKE_BUILD_TYPE STREQUAL "Coverage"
  3. 运行 cmake-DCMAKE_BUILD_TYPE=Coverage

  4. 运行 make

  5. 运行 make <coverage_target>

注意:

  • ${TEST_TARGET}是我用我之前在脚本中创建的单元测试目标的名称设置的变量。
  • <coverage_target>是由 ${PROJECT_NAME}_coverage 生成的任何字符串.
  • 您不必使用 if 来包装覆盖创建就像我一样。
  • 因为我使用的是 AppleClang,所以我必须修复 CodeCoverage.cmake 脚本以允许它。现在的编写方式仅允许 gcc 和 clang 3.0.0 或更新版本。

关于c++ - 如何在 Cmake 中使用 gcov,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37957583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com