Catch CatchLib CMake test(Ctest)との統合の成功例を探しています。私が理解しているように、これはアプリケーションの出力を解析する必要がある追加のcmakeスクリプトですか?誰かがすでにこれを書いていましたか?おそらくこれを共有しましたか?
=================================================
更新(解決策が見つかった):
CatchとCTestの統合のために、 cmake script をCatchLibにコミットしました。これは、Fraser99のcmakeスクリプトの簡易バージョンです here
CatchとCMakeの統合は、ヘッダーのみのライブラリであるため、かなり簡単です。
ここに、あなたがしなければならないことの簡単な要約があります:
Catchソースが既にビルドマシンにインストールされていると仮定するか、ビルドプロセスの一部としてフェッチするために ExternalProject を使用できます。
どちらの場合でも、ビルドマシンの既知のディレクトリにCatchヘッダーファイルが作成されます。この情報をテスト実行可能ファイルに知らせるためのインターフェイスターゲットを作成することをお勧めします。
add_library(Catch INTERFACE)
target_include_directories(Catch INTERFACE ${YOUR_CATCH_INCLUDE_DIR})
そうすれば、Catchをtarget_link_libraries
への依存関係として単純に指定できます。
add_executable(my_test ${MY_TEST_SOURCES})
target_link_libraries(my_test Catch)
CMakeの場合と同様に、 add_test
はCTestにテストを導入します。
enable_testing()
add_test(NAME MyAwesomeTest COMMAND my_test)
そして、それはすでにそれです。ビルドされたプロジェクトでmake test
を実行して、テストを実行します。
Githubのプロジェクト があり、完全な実例を見る必要がある場合にこれを行います。
以下を使用してcatchをインストールします。
$ git clone https://github.com/catchorg/Catch2 <catch_src_dir>
$ mkdir <catch_bin_dir>
$ cd <catch_bin_dir>
$ cmake -DBUILD_TESTING:BOOL=FALSE <catch_src_dir>
$ make
$ make install
次に、CMakeLists.txtに次を追加します。
find_package(Catch2 REQUIRED)
target_link_libraries(tests Catch2::Catch2)
here を参照してください。