2009-06-15 24 views
3

プロジェクトをビルドするためにautoconfでconfigureスクリプトを生成しました。configureスクリプトを使って依存関係をチェックする方法

必要なライブラリがインストールされていないと正常に動作しません。 Makeがいくつかのファイルがないときにエラーを返すが、configureスクリプトが実際にチェックするべきだと思う?

私の質問は次のとおりです。autoconfで生成されたスクリプトを修正して依存関係を探し、どのライブラリに不足しているかを教えてください。

答えて

4

依存関係によっては、一般的な解決策はありません。

ライブラリーとヘッダーが標準の場所にインストールされている場合は、AC_CHECK_LIB and AC_SEARCH_LIBS macrosがあります。

現在、多くのパッケージでは、pkg-configなどのライブラリが存在するかどうかを確認することができます。また、コンパイラやリンカのフラグを指定することもできます。

ACマクロでは動作せず、pkg-configなどをサポートしていないパッケージでは、依存性が利用可能かどうか、また必要なコンパイラオプションとリンカオプションを調べるために、大量のスクリプトを自分で作成する必要があります。それでも、ポータブルにするのは難しいです。

+0

ありがとう、これらのマクロは正常に動作しました –

1

過去にこのやり方をしてきたのは、必要なヘッダファイルを引っ張ったり、必要なライブラリにリンクしたり、configureスクリプトでコンパイル/リンクしたりするという簡単なプログラムを書くことです。それが失敗すると、要件が満たされていないことを示すメッセージが表示されます。私は詳細を提供したいと思いますが、コードはもはや私たちのドライブにはありません。

2

はい、設定時にチェックを実行します。あなたは事前2.5のautoconfを持っている場合は、あなたの代わりにconfigure.inを使用しますことを

if test "x$requires_libavl" = "xyes" ; then 
    AC_CHECK_LIB(avl, avl_create, [], [ 
     echo "Error! You need to have libavl around." 
     exit -1 
     ]) 
fi 

注:このようごconfigure.acに(thanks to Shlomi Fish)次のようにコードを貼り付けます。

+0

-2.5より前のautoconfをお持ちの場合は、autoconfをアップグレードしてください。 2.64がリリースされました! AS_IF([テスト "のx $のrequire_libavl" = "xyes"]、 [AC_CHECK_LIB([AVL]、[avl_create]、[]、 [AC_MSG_ERROR([必須libavl]:ベストプラクティスは、上記のようにコーディングし –

+1

現在のautoconf )])])] ) –

関連する問題