2

結果のconfigureスクリプトが、libsomething.aなどの特定の静的ライブラリを含むライブラリディレクトリを検索するように、configure.acファイルを作成しようとしています。これどうやってするの?現時点では、次のように1つの場所だけをチェックしています:

AC_CHECK_FILE([/usr/local/lib/libsomething.a],[AC_SUBST(libsomething,"-L/usr/local/lib -lsomething")],[AC_SUBST(libcfitsio,'')])

しかし、私はそれを自動的に見つけようとします。また、ライブラリがデフォルトの場所のいずれにもない場合は、ライブラリが見つからず、通常のように --use-something=path でカスタムの場所を指定できるように構成したいと思います。そのため、 --use-something=path が提供されているかどうかも確認する必要があります。私は構成ファイルを作成するのはかなり新しいもので、M4 のドキュメントは簡単に理解できるものではないので、助けていただければ幸いです。

ありがとう!

4

2 に答える 2

16

ライブラリがインストールされている場所を検索するのは configure の仕事ではありません。リンカーがそれらを利用できるようにするだけです。ユーザーがそれらを別の場所にインストールした場合、./configure CPPFLAGS=-I/the/location/include LDFLAGS=-L/the/location/libツールがライブラリを見つけるように呼び出す方法を知っています (これは、標準ファイルの--help出力とで説明されています)。configureINSTALL

また--with-package--enable-package多くのサードパーティのマクロが行うこととは対照的に、パスを指定するためにマクロを使用することは想定されていません。GNU コーディング標準では、この使用法を明示的に禁止しています。

--with特定のファイルの検索に使用するファイル名を指定するオプションを使用しないでください。--withそれは、オプションの目的の範囲外です。

CPPFLAGSLDFLAGS問題に対処するためにすでにここにいるのに、なぜ別のメカニズムを再開発して維持するのでしょうか?

于 2009-10-02T08:49:13.647 に答える
2

これを理解する最善の方法は、同様のことを行う他の autoconf マクロを調べることです。Autoconf マクロは、Bourne シェル スクリプトと M4 コードの融合であるため、計算可能なあらゆる問題を文字通り解決できます。

これを行うMySQL ++用に私が書いたマクロへのリンクは次のとおりです:mysql++.m4

于 2009-09-30T23:58:47.567 に答える