web-dev-qa-db-ja.com

C ++ 0xサポートを使用してBoostをビルドする方法は?

C++ 0xコンパイラーでBoostをビルドする方法がわかりません。 bjamにどのオプションを指定する必要がありますか? user.configファイルを変更する必要がありますか?

ベスト、ビセンテ

41

答えを見つけました。私は「std」のような機能を待っていて、それを次のように呼んでいました:

bjam std=0x

しかし、現在は低レベルの変数cxxflagsを使用し、特定のコンパイラフラグを追加する必要があります。たとえば、gccの場合、次のことができます

bjam toolset=gcc cxxflags=-std=gnu++0x

他のコンパイラは別の設定が必要になります。

新しいBoost.Build機能を待つ間、次のように独自のツールセットを定義することもできます。user.configまたはsite.configファイルを追加します。

using gcc
   : std0x
   : "/usr/bin/g++" # your path to the C++0x compiler
   : <cxxflags>-std=gnu++0x
   ;

そして今、

bjam toolset=gcc-std0x
42

次のようなものを使用します:

./bootstrap.sh --with-toolset=gcc --prefix=/usr/local

./b2 -j12 toolset=gcc variant=release link=shared threading=multi address-model=64 cxxflags=-std=c++11 install 

-j12は並列(12スレッド)ビルド用で、互換性を高めるには-std=c++11を使用し、gnu拡張機能には-std=gnu++11を使用します(gccのみ)

boost :: mpiがビルドされない場合(上記のコマンドの出力を参照)-> user-config.jamを編集します。

特定のコンポーネントのみをビルドする場合:追加:

--with-libraries=system,thread,serialization

例えば

これは、myからの適応スクリプトです framework travisから(調整ROOT_PATH):

BOOST_DOWNLOAD_URL="http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.bz2/download"
BOOST_BUILD=${ROOT_PATH}/boostBuild
mkdir -p ${BOOST_BUILD}
wget --no-verbose --output-document="${ROOT_PATH}/boost.tar.bz2" "$BOOST_DOWNLOAD_URL"
cd ${BOOST_BUILD}
tar jxf "${ROOT_PATH}/boost.tar.bz2" --strip-components=1 -C "${BOOST_BUILD}"
./bootstrap.sh --with-toolset=gcc --with-libraries=system,thread,serialization,filesystem,chrono,atomic,date_time
Sudo ./b2 -j12 toolset=gcc threading=multi link=shared release install

/usr/localにインストールされます。

10
Gabriel

Clangを使用してコンパイルするには、cxxflagsおよびlinkflagsを使用します。

./b2 \
    ...
    cxxflags="-std=c++0x -stdlib=libc++" \
    linkflags="-stdlib=libc++" \
    ...

-v to cxxflagsもデバッグ時に役立ちます。

9
Sean

Clangを使用してBoostをコンパイルするための記事を見つけました: http://blog.llvm.org/2010/05/clang-builds-boost.html 。 Boost.Jamを使用してBoostをコンパイルするために提案されている変更を、お気に入りのC++ 0xコンパイラーに適合させることができる場合があります。

3
Pieter

また、次のように 1つのファイルのコンパイルフラグを変更 することもできます。

exe test : test.cpp : <cxxflags>-std=gnu++0x ;

3
Bunkar