最近、ビルド システムを automake/autoconf に変換しました。私のプロジェクトでは、実行元のディレクトリに入力データ ファイルを必要とする単体テストがいくつかあります。make distcheck を実行して VPATH ビルドを試行すると、入力ファイルがあるディレクトリから実行されていないように見えるため、これらのテストは失敗します。これに対する簡単な修正があるかどうか疑問に思っていました。たとえば、make distcheck でこれらのテストを実行しないようにシステムに指示することはできますか (ただし、make check では実行します)。または、テストを実行する前にファイルがあるディレクトリに cd しますか?
質問する
1263 次
2 に答える
8
私は同じ問題を抱えており、ウィリアムと同様の解決策を使用しました。私のMakefile.amは次のようになります。
EXTRA_DIST = testdata/test1.dat
AM_CPPFLAGS = -DDATADIR=\"$(srcdir)/\"
次に、単体テストで、DATADIR定義を使用します。
string path = DATADIR "/testdata/test1.dat"
これはとで動作しmake check
ますmake distcheck
。
于 2012-08-15T08:23:52.800 に答える
5
一般的な解決策は、データ ファイルのソース ディレクトリを参照するようにテストを作成することです。たとえば$srcdir
、テストで参照したり、 に変換test
しtest.in
て参照したりできます@srcdir@
。
テストがすべてソース ディレクトリにある場合は、Makefile.am で TESTS_ENVIRONMENT を設定することにより、そのディレクトリですべてのテストを実行できます。
TESTS_ENVIRONMENT = cd $(srcdir) &&
テストの一部がconfigureによって作成され、ビルドディレクトリにのみ存在する場合、これは失敗します。この場合、次のように選択的にcdできます。
TESTS_ENVIRONMENT = { test $${tst} = mytest && cd $(srcdir); true; } &&
このように TESTS_ENVIRONMENT を使用しようとするのは、せいぜい脆弱であり、データ ファイルのソース ディレクトリを参照するようにテストを作成するのが最善です。
于 2012-07-06T14:31:58.523 に答える