プロジェクトをビルドするために、autoconfを使用してconfigureスクリプトを生成しました。
必要なライブラリがインストールされていない限り、正常に動作します。一部のファイルが不足している場合はエラーが返されますが、実際にはconfigureスクリプトで確認する必要がありますか?
だから私の質問は:依存関係を探してユーザーにそれが欠けているライブラリを伝えるためにautoconfで生成されたスクリプトを変更する方法は?
プロジェクトをビルドするために、autoconfを使用してconfigureスクリプトを生成しました。
必要なライブラリがインストールされていない限り、正常に動作します。一部のファイルが不足している場合はエラーが返されますが、実際にはconfigureスクリプトで確認する必要がありますか?
だから私の質問は:依存関係を探してユーザーにそれが欠けているライブラリを伝えるためにautoconfで生成されたスクリプトを変更する方法は?
依存関係に応じて、一般的な解決策はありません。
ライブラリとヘッダーが標準の場所にインストールされている場合に機能する可能性のあるマクロがAC_CHECK_LIB
あります。AC_SEARCH_LIBS
最近の多くのパッケージはpkg-config
、ライブラリの存在を確認できるようにするものなどをサポートしており、必要なコンパイラとリンカのフラグを提供することもできます。
ACマクロで動作せず、サポートなどを行わないパッケージではpkg-config
、依存関係が利用可能かどうか、および必要なコンパイラとリンカのオプションを確認するために、おそらく自分で大量のスクリプトを作成する必要があります。それでも、ポータブルにするのは難しいです。
はい、構成時にチェックを実行します。次のようなコードを(Shlomi Fishのおかげで)あなたのconfigure.ac
:に貼り付けてください
if test "x$requires_libavl" = "xyes" ; then
AC_CHECK_LIB(avl, avl_create, [], [
echo "Error! You need to have libavl around."
exit -1
])
fi
2.5より前のautoconfがある場合は、configure.in
代わりに使用することに注意してください。
私が過去にこれを行った方法は、必要なヘッダーファイルをプルするか、必要なライブラリにリンクする簡単なプログラムを作成し、それをconfigureスクリプトでコンパイル/リンクすることです。それが失敗した場合は、要件が満たされていないことを示すメッセージを送信します。詳細をお伝えしたいと思いますが、コードはもう使用されていないドライブにあります。