ビルドに autotools を使用し、単体テストにCatch2を使用する C++ プロジェクトがあります。Catch2 の詳細はおそらく関係ありません。これは、ビルドして実行する必要がある別のプログラムにすぎません。
私はMakefile.am
このように設定しました(簡略化):
AUTOMAKE_OPTIONS = subdir-objects
check_PROGRAMS = catch2
bin_PROGRAMS = lpsdr
common_sources = applicationcontroller.cc flowgraph.cc [...]
lpsdr_SOURCES = $(common_sources) main.cc
catch2_SOURCES = $(common_sources) test.cc
これは、すべてを 2 回コンパイルし、 とlpsdr-applicationcontroller.o
を作成することを除いて、ほとんどの場合機能します。catch2-applicationcontroller.o
common_sources
もちろん、これによりビルド時間は 2 倍になります。catch2
と の両方を同じオブジェクト ファイルにリンクすることをお勧めしlpsdr
ます。その方がビルドが高速であり、実行中のコンパイル済みコードとまったく同じコードをテストしていることを確認できます。
この動作を回避する方法はありますか?