8

私のプロジェクトは、GNU autotools ( aclocal && autoconf && ./configure && make) を使用してコンパイルします。Boost を使いたいのですが、他の人もコンパイルできるようにしてほしいです。

  1. プロジェクトのディレクトリに Boost を配置する必要がありますか、それともシステムの Boost に依存する必要がありますか?
  2. Boost を使用するよう autotools に指示するにはどうすればよいですか? 私はグーグルで調べて、これを行うと主張する多くのm4ファイルを見つけました-しかし、それらのm4ファイルをどこに置くべきですか? 私は自分の/usr/share/aclocalディレクトリに1つを隠すことができますが、 ./configure && make.
4

3 に答える 3

2

プロジェクトのサブディレクトリに含めることができる優れたboost.m4m4マクロがあります。これらのマクロは にありAC_CONFIG_MACRO_DIR([m4])ますconfigure.ac

によって使用されるACLOCAL_AMFLAGS = -I m4 --install最上位の に追加します。Makefile.amautomake

優れたマクロである理由は次のとおりです。

BOOST_REQUIRE([1.54],[ACTION-IF-NOT-FOUND])

BOOST_CPPFLAGSこれにより、に追加できるものCPPFLAGS、 で使用できるものなどが定義されますAC_SUBST

個々の Boost コンポーネントに対して、デバッグ ビルド、静的ビルドなどを指定することができます。ただし、(通常は) マルチスレッドの動的ライブラリが最適です。たとえば、

BOOST_FILESYSTEM([mt])

と を定義BOOST_FILESYSTEM_LIBSBOOST_FILESYSTEM_LDFLAGSます。別のボーナスとして、ライブラリがたとえば Boost.System に依存している場合、これらのライブラリの依存関係は 、 などに自動的に追加されLIBSますLDFLAGS


配布しようとするのではなく、ブーストのインストールが必要であることを指定する必要があります。ソースまたはプリコンパイル済みパッケージから簡単にビルドおよびインストールできます。前者は時間がかかりますが、システム上で「最適化された」ビルドを作成することをお勧めします。(堅牢で最適化された) Boost 実装を利用できるソフトウェアはたくさんあります。

BOOST_REQUIRE利用可能な許容可能なバージョンがない場合は、エラー メッセージを使用します。

于 2013-08-16T21:18:49.390 に答える
0
  1. 私は間違いなく、システムの Boost インストールに頼っています。IIRC、最後にBoostをビルドしたとき、Boostをビルドするには非標準ツール(autoconfに必要なポータブルツールについて)が必要でした。また、長い時間がかかりました。
  2. AC_CONFIG_MACRO_DIRこれらの .m4 ファイルの場所です

    AC_CONFIG_MACRO_DIR([m4])
    

マクロは「m4」ディレクトリにあります。さまざまな Boost .m4 マクロにはconfigure、検索する Boost パッケージ (複数の Boost インストールの場合) とその場所 (非標準インストール) を伝える何らかの方法があると思います。

于 2013-08-16T20:04:16.917 に答える