web-dev-qa-db-ja.com

cmakeでコードカバレッジを行う方法

Cmakeプロジェクトでコードカバレッジツール(lcov)を使用したい。ここで例を読みました https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake テストは「add_test()」cmake関数を使用してプロジェクトに追加されます。

'test_coverage'と呼ばれるカスタムターゲットを作成したいのですが、実行のために呼び出されると、すべてのテストを実行し、カバレッジデータを収集して、ディレクトリ 'code_coverage'にhtmlを生成します(genhtmlを使用)。

プロジェクト内のすべてのテストとそのディレクトリパスのリストを取得して、カスタムターゲット「test_coverage」で各テストを個別に実行し、そのカバレッジデータを収集できるようにする方法はありますか?

13
Monku

コマンドラインから「ctest-VV」を実行できます。すべてのテストがadd_testを使用して作成されている場合は、すべてが実行されます。

カスタムビルドターゲットで同じことを実行する場合は、次のコードを使用できます。

add_custom_target(run_tests
   COMMAND "ctest -VV" )

コードカバレッジとユニットテスト用のcmakeコードがたくさんありますが、まだ始めたばかりのように聞こえるので、ここにコピーして貼り付けるのは意味がありません。

2