3

そのため、コードのテストを作成しており、ライブラリ関数の呼び出しをスタブ化したいと考えています(適切なライブラリ呼び出しが適切なタイミングで呼び出され、エラーが適切に処理されることを確認してください)。

私はC標準ライブラリ関数を備えたSOLだと思いますが、使用しているライブラリはそれだけではありません。

(テスト実行可能ファイルではなく)最終実行可能ファイルをビルドするときに使用したい-lfuseので、この行をconfigure.ac

AC_CHECK_LIB([fuse], [fuse_main])

しかし、これは-lfuse私のを構築しようとするときにも投げ込みcheck_PROGRAMSます。

-lfuseテスト実行可能ファイルをビルドするときにライブラリが不要であることをautotoolsに伝える方法はありますか( make check)?そうすれば、同じ名前でリンクされているものは他にないので、必要に応じてライブラリ呼び出しをスタブ化できるはずです。

4

2 に答える 2

2

libfuseはfuse.pcソースディストリビューションでファイルを提供しているので、それをチェックする適切な方法はを使用することpkg-configです。できるよ

PKG_CHECK_MODULES([APPNAME], [fuse ...and any other libraries to check for...])

あなたのconfigure.ac中で、そして

appname_CFLAGS += @APPNAME_CFLAGS@
appname_LIBS += @APPNAME_LIBS@

src/Makefile.am。次に、これらの変数をテストプログラムに追加しないでください。

于 2010-07-21T08:39:30.313 に答える
0

わかりました、私は解決策を見つけたと思います。私はそれが正しい解決策であると確信していないので、誰かがもっと良いものを思い付くことができるかどうかを確認するためにここに戻ってチェックします。

のデフォルトの成功/失敗アクションをに変更したconfigure.ac場合

 AC_SUBST([HAVE_LIBFUSE])
 AC_CHECK_LIB([fuse], [fuse_main], [HAVE_LIBFUSE=1])

次に、でフラグを手動で追加-lfuseします。これは、メインの実行可能ファイルを作成したときに含まれ、テストで関数を自由にスタブアウトできます。<appname>_LDADDsrc/Makefile.am

少なくとも私はそうだと思います、そしてこれは私が今のところ前進するのに十分です。

于 2010-07-20T19:25:19.123 に答える