プロジェクトをビルドするためにautoconfでconfigureスクリプトを生成しました。configureスクリプトを使って依存関係をチェックする方法
必要なライブラリがインストールされていないと正常に動作しません。 Makeがいくつかのファイルがないときにエラーを返すが、configureスクリプトが実際にチェックするべきだと思う?
私の質問は次のとおりです。autoconfで生成されたスクリプトを修正して依存関係を探し、どのライブラリに不足しているかを教えてください。
プロジェクトをビルドするためにautoconfでconfigureスクリプトを生成しました。configureスクリプトを使って依存関係をチェックする方法
必要なライブラリがインストールされていないと正常に動作しません。 Makeがいくつかのファイルがないときにエラーを返すが、configureスクリプトが実際にチェックするべきだと思う?
私の質問は次のとおりです。autoconfで生成されたスクリプトを修正して依存関係を探し、どのライブラリに不足しているかを教えてください。
依存関係によっては、一般的な解決策はありません。
ライブラリーとヘッダーが標準の場所にインストールされている場合は、AC_CHECK_LIB
and AC_SEARCH_LIBS
macrosがあります。
現在、多くのパッケージでは、pkg-config
などのライブラリが存在するかどうかを確認することができます。また、コンパイラやリンカのフラグを指定することもできます。
ACマクロでは動作せず、pkg-config
などをサポートしていないパッケージでは、依存性が利用可能かどうか、また必要なコンパイラオプションとリンカオプションを調べるために、大量のスクリプトを自分で作成する必要があります。それでも、ポータブルにするのは難しいです。
過去にこのやり方をしてきたのは、必要なヘッダファイルを引っ張ったり、必要なライブラリにリンクしたり、configureスクリプトでコンパイル/リンクしたりするという簡単なプログラムを書くことです。それが失敗すると、要件が満たされていないことを示すメッセージが表示されます。私は詳細を提供したいと思いますが、コードはもはや私たちのドライブにはありません。
はい、設定時にチェックを実行します。あなたは事前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)次のようにコードを貼り付けます。
-2.5より前のautoconfをお持ちの場合は、autoconfをアップグレードしてください。 2.64がリリースされました! AS_IF([テスト "のx $のrequire_libavl" = "xyes"]、 [AC_CHECK_LIB([AVL]、[avl_create]、[]、 [AC_MSG_ERROR([必須libavl]:ベストプラクティスは、上記のようにコーディングし –
現在のautoconf )])])] ) –
ありがとう、これらのマクロは正常に動作しました –