0

automake と autotools を使用して小さな C++ プログラムをバンドルしようとしています。私の現在のセットアップでは、必要なライブラリはconfigureスクリプトが検出できる場所にインストールされていますが、make から呼び出したときに検出されませんg++

-I呼び出し時に関連するオプションを渡すことでこれを修正できますがconfigure(適切なインクルード パスがコンパイラに渡されるように)、configureスクリプトがライブラリを見つけられmakeない場合はいつでもライブラリを見つけられないことをお勧めします。

-Iあるいは、configure スクリプトで必要なコマンドを生成して、コンパイラが必要なものをすべて見つけられるようにしたいと考えています。

これを行う標準的な方法はありますか?

4

1 に答える 1

1

configure スクリプトが壊れているか、configure の出力の解釈が間違っている可能性があります。

configure 中の library-check で、特定のライブラリにリンクできるかどうかをチェックする場合、コンパイルに必要なヘッダーが利用可能 (または検索可能) であることを保証するものではありません。

したがって、ライブラリとヘッダーの両方について、configure.ac にチェックを追加する必要があります。

AC_CHECK_LIB([foo], [foo_init])
AC_CHECK_HEADERS([foo.h])

libとヘッダーの両方が存在する場合にのみビルドできると想定してください。

ヘッダーが見つからず、それらがどこにあるかがよくわかっている場合は、それらのパスを (configure 内で) 追加して、テストを再実行できます。かなり標準的なパスを追加する必要があることを考えると ('/usr/local/include' は、どのような場合でも自動検索パスの一部である必要があります; '/sw/include' は fink の一部であるため、システムを実行して適切に

$ . /sw/bin/init.sh

./configure を実行する前に、端末で (「$」を省略)

于 2012-05-21T09:19:03.380 に答える