C++0x コンパイラで Boost をビルドする方法がわかりません。bjam に与える必要があるオプションはどれですか? user.config ファイルを変更する必要がありますか?誰か助けてくれますか?
ベスト、ビセンテ
私は答えを見つけました。私は「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
次のようなものを使用します。
./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 は、-std=c++11
互換性を高めるための並列 (12 スレッド) ビルドの使用と -std=gnu++11
、gnu 拡張 (gcc のみ) 用です。
boost::mpi がビルドされていない場合 (上記のコマンドの出力を参照) -> user-config.jam を編集します。
特定のコンポーネントのみをビルドする場合: 追加:
--with-libraries=system,thread,serialization
例えば
これは、 travis (adjust )の私のフレームワークから適応したスクリプトです。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
ます。
clang を使用してコンパイルするには、cxxflags
およびを使用しlinkflags
ます。
./b2 \
...
cxxflags="-std=c++0x -stdlib=libc++" \
linkflags="-stdlib=libc++" \
...
-v
to を渡すと、cxxflags
デバッグ時にも役立ちます。
clangを使用してBoostをコンパイルするための記事に出くわしました:http://blog.llvm.org/2010/05/clang-builds-boost.html。Boost.Jamを使用してBoostをコンパイルするためにそこで提案された変更を、お気に入りのC++0xコンパイラに適合させることができる場合があります。
また、次のように 1 つのファイルのコンパイル フラグを変更することもできます。
exe test : test.cpp : <cxxflags>-std=gnu++0x ;