0

初心者の質問かもしれませんが、私は本当にそれを理解しようとしています: 私は他のライブラリ (例: log4cplus、および getopt_pp) を使用する C++ プロジェクトを持っています。私はこれを Eclipse で開発しましたが、今は autotools を使用して構成し、メイクファイルと構成スクリプトを使用して配布して、誰もがコンパイルできるようにしています。私の質問は、どうすればその呼び出しを取得できますか、./configureまたは./makeエンドユーザーシステムで静的ライブラリを自動的にコンパイルおよびインストールしますか?

  • これを行う最善の方法は何ですか?
  • ライブラリをインストールするための最適なパスは何ですか?
4

2 に答える 2

1

最善の方法は、これをまったく行わないことです。代わりに、アプリケーション/ライブラリが他のライブラリ(およびできればテストしたバージョン)に依存していることを(インストールドキュメントで)文書化し、configureスクリプトでこれらの依存関係の存在を確認する必要があります。

理由は次のとおりです。

  • このようなライブラリを配置する必要があるシステムには、大きな違いがあります。あなたのスクリプトは、誰にとっても正しくそれを行うことは決してありません。
  • ユーザーはすでに互換性のあるバージョンをインストールしていて、ソフトウェアにバンドルされているバージョンよりもそのバージョンを使用することを好む場合があります。
  • このようなライブラリをアプリケーションに静的にリンクすることは、最近では実際には非常にまれです。すべての主要なコンパイラは、デフォルトでダイナミックリンクになっています。これにより、ユーザーがそれらのライブラリのバージョンをすでにインストールしている可能性がさらに高くなります。
于 2013-01-02T17:58:57.033 に答える
0

ライブラリをプロジェクトと一緒に出荷する場合(ライブラリを個別に配布し、ユーザーにライブラリがインストールされていることを確認する必要があるのではなく)、プロジェクト内の独自のディレクトリにライブラリを配置することをお勧めしますconfigure.acMakefile出力ターゲットをにAC_OUTPUT追加して、これらのサブディレクトリを認識していることを確認してください。

AC_OUTPUT(Makefile log4cplus/Makefile getopt_pp/Makefile yourprogramsrc/Makefile)

次に、ルートレベルMakefile.amで、新しいサブディレクトリについて知らせます。

SUBDIRS=log4cplus getopt_pp yourprogramsrc

次に、インクルードフラグとリンカーフラグが、インクルードしているライブラリを指すように正しく設定されていることを確認します。

于 2013-01-02T18:00:19.013 に答える