1. ホーム
  2. c++

[解決済み] CMake/CDashでgcovを使用するための詳細なガイド?

2022-02-10 11:19:37

質問

私は自分のプロジェクトでCMakeを使用しており、継続的/毎晩のビルドのためにcdashサーバーをセットアップしています。すべてがうまくいき、crontabを設定することで、毎時間/毎晩のビルド/テスト結果が自動的にcdashサーバーにアップロードされます。

次のステップは、ビルドにテストカバレッジレポートを追加することです。ここにドキュメントがあります。 http://www.cmake.org/Wiki/CTest:Coverage が、正直なところ、実用的なガイドとは少しほど遠い。

現在、私は必須フラグ(の代わりに -fprofile-arcs -ftest-coverage を見つけると --coverage の方が良い)、コンパイルプロセスで.gcnoファイルが生成されます。しかし、その後、私は立ち往生しています。コマンドは

make NightlyCoverage

は何もしないようです。次に何をすればいいのか、どなたか教えていただけませんか?私が望む結果は、次のようなものです。 make NightlyCoverage カバレッジレポートが作成され、cdashサーバーにアップロードされます。

解決方法は?

私はこれまで https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake に成功しました。

ガイドラインに従って、ファイルを私の CMAKE_MODULE_PATH ディレクトリを追加し、さらに

set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules)
if(CMAKE_COMPILER_IS_GNUCXX)
    include(CodeCoverage)
    setup_target_for_coverage(${PROJECT_NAME}_coverage ${PROJECT_TEST_NAME} coverage)
endif()

私の CMakeLists.txt . また、手動で gcov をターゲットに依存するようにしました。

if(CMAKE_COMPILER_IS_GNUCXX)
    target_link_libraries(${PROJECT_TEST_NAME} gcov)
endif()

この場合、私はただ

make my_project_coverage

でhtmlレポートを取得し coverage ディレクトリを作成しました。