Я не знаю, как создать Boost с компиляторами С++ 0x. Какой вариант должен быть задан для bjam? Должен ли файл user.config быть изменен? Может ли кто-нибудь помочь мне?
Бест, Висенте
Я не знаю, как создать Boost с компиляторами С++ 0x. Какой вариант должен быть задан для 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
Для компиляции с использованием clang используйте кнопки cxxflags
и linkflags
:
./b2 \
...
cxxflags="-std=c++0x -stdlib=libc++" \
linkflags="-stdlib=libc++" \
...
Передача -v
в cxxflags
также полезна при отладке.
Используйте что-то вроде этого:
./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
для лучшей совместимости и -std=gnu++11
для расширений gnu (только для gcc)
если boost:: mpi не создается (см. вывод вышеприведенной команды) → отредактируйте user-config.jam
если вы хотите создать только определенные компоненты: добавить:
--with-libraries=system,thread,serialization
например
Вот адаптированный script из моего 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
.
Я наткнулся на статью для компиляции Boost с использованием clang: http://blog.llvm.org/2010/05/clang-builds-boost.html. Возможно, можно будет адаптировать предлагаемые там изменения для компиляции Boost с использованием Boost.Jam в ваш любимый компилятор С++ 0x.
Кроме того, вы можете изменить флаги компиляции для одного файла следующим образом:
exe test : test.cpp : <cxxflags>-std=gnu++0x ;