2016-12-31 3 views
5

別のビルドシステムを使用してライブラリを構築しようとしていますが、ライブラリ内のファイルにautoconfによって生成された構成スクリプトを実行した後に生成されるconfig.hヘッダーファイルが必要です。構成スクリプトの依存関係の追跡を無効にする方法

これは、ビルドシステムは、ライブラリgflagsがリンクされ、ヘッダが前処理時に利用できるようになりますことを保証必要とされている私はconfig.hファイルをしようとして生成するには、次の午前一連のステップ

autoreconf -ivf 
./configure --disable-dependency-tracking 

です。しかしconfigureスクリプトは次のエラーで終了し

​​

私は(例えばGFLAGSなど)必要なライブラリの一覧を取得し、このライブラリが存在することを前提とするためにそれを伝えるconfigureスクリプトに引数を渡すことができますいくつかの方法がありますシステム上で?私はautoreconf./configureの両方のヘルプ出力を調べ、これを理解することはできませんでした。

申し訳ありませんが、長い説明と問題です。 autoconfなど非常に新しいです。

答えて

5

いいえ、オートツールから依存関係のリストを取得することはできません。

なぜですか?

まあ、autotoolsは依存関係をまったく追跡しません。 代わりに、特定の機能がシステム上に存在するかどうかをチェックします(特定のヘッダーファイル、または特定のライブラリファイルなど)。 特定のヘッダファイルはさまざまなソースから来ることができます。ディストリビューションに応じfoo.hヘッダは

  • foo(上流)

    • libfoo-dev(Debianとその誘導体)
    • foo-devel
    • (Fedoraの)を介してインストールすることができ
    • ...

    で特定のケースでは、プロジェクトのメンテナが、指定されたパッケージを名前でインストールするという素晴らしいエラーメッセージを出力します。

    また、プロジェクトの管理者は、特定の依存関係が利用できない場合、致命的なエラーで中止することを選択しました。 その理由は、プロジェクトがその依存関係なしではうまく動作せず、それがなくてもプログラムをコンパイルすることは不可能だからです。

    あなたのプロジェクトはC++で書かれたので、C++ -compilerが必要とされる可能性があります。 確かに、にいくつかのフラグを渡すことはほとんどありませんので、と仮定します。実際には存在しない場合は、が利用可能です。

    希望があります。

    ただし、すべてが悪くはありません。 configureスクリプトでは、特定の機能を無効にする機能があります(デフォルトではハードな要件となっています)。

    だけ./configure --helpをチェックして、

    • --enable-FOO
    • --disable-FOO
    • --with-BAR
    • --without-BAR

    自動化などのフラグを探して? autotoolsのを知って

    ことの一つは、これは、それが実質的に持つことができることを意味しconfigureは本当に(bashm4含む)いくつかの難解なプログラミング言語で書かれたプログラム(ソースコードはconfigure.acである)、 があるということです任意の 「依存するトラッキング」を達成するための単一の標準的な方法はありません。

  • 2

    あなたがしようとしていることは、ウムラテがすでに言ったように動作しません。一方、あなたが構築しようとしているパッケージに依存し、あなたが与えられたライブラリーは、それがない場合であってもそこにあることを./configureを伝えることができるかもしれません。例えば

    スクリプトは、ライブラリーの有無をチェックするためにpkg-configを使用して、あなたは存在チェックを無効にするためにFOO_CFLAGSFOO_LIBSを使用することができますし、それらのパッケージがある「はい、あなただけを見つける方法がわからないことを言っている場合これらは非常にパッケージ固有のものなので、探しているものがあればさらに情報を提供する必要があります。

    関連する問題