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 PUBLIC Catch)
CMake でいつものように、add_test
CTest へのテストの導入を処理します。
enable_testing()
add_test(NAME MyAwesomeTest COMMAND my_test)
そして、それはすでにそれです。ビルドされたプロジェクトで実行make test
して、テストを実行します。
完全な動作例を見る必要がある場合は、Githubにこれを行うプロジェクトがあります。
Catch の新しいバージョンの更新:既に Catch2 にアップグレードしている場合は、Catch2 に独自のパッケージ構成ファイルが付属しているため、呼び出して統合することができますfind_package
。これにより、全体的にスムーズな CMake 統合が提供され、独自のインターフェイス ターゲットの定義を開始する必要がなくなります。上記のアプローチは Catch2 でも機能しfind_package
ますが、Catch バージョンが既にサポートしている場合は使用することをお勧めします。