¿Cómo construir Boost con soporte C++ 0x?
c++11 bjam (5)
Además, puede cambiar los indicadores de compilación para un archivo como este:
exe test : test.cpp : <cxxflags>-std=gnu++0x ;
No sé cómo compilar Boost con compiladores C ++ 0x. ¿Qué opción se debe dar a bjam? ¿Debería modificarse el archivo user.config? ¿Alguien puede ayudarme?
Mejor, Vicente
Encontré un artículo para compilar Boost usando clang: http://blog.llvm.org/2010/05/clang-builds-boost.html . Podría ser posible adaptar los cambios propuestos allí para compilar Boost usando Boost.Jam a su compilador C ++ 0x favorito.
He encontrado la respuesta. Estaba esperando una característica como ''std'' y la llamo de la siguiente manera:
bjam std=0x
pero actualmente necesitamos usar las variables de bajo nivel cxxflags y agregar los indicadores específicos del compilador. Por ejemplo, para gcc podemos hacer
bjam toolset=gcc cxxflags=-std=gnu++0x
Otros compiladores necesitarán una configuración diferente.
En espera de una nueva función Boost.Build, también puede definir su propio conjunto de herramientas de la siguiente manera: Agregue el archivo user.config o site.config
using gcc
: std0x
: "/usr/bin/g++" # your path to the C++0x compiler
: <cxxflags>-std=gnu++0x
;
Y ahora llama como
bjam toolset=gcc-std0x
Para compilar usando clang, use los cxxflags
y linkflags
:
./b2 /
...
cxxflags="-std=c++0x -stdlib=libc++" /
linkflags="-stdlib=libc++" /
...
Pasar un -v
a cxxflags
también es útil cuando se cxxflags
.
Usa algo como esto:
./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
El -j12 es para uso en paralelo (12 hilos) -std=c++11
para una mejor compatibilidad y -std=gnu++11
para las extensiones gnu (solo para gcc)
if boost :: mpi no es compilación (vea la salida del comando anterior) -> edit the user-config.jam
si desea compilar solo ciertos componentes: agregue:
--with-libraries=system,thread,serialization
por ejemplo
Aquí hay un script adaptado de mi framework de travis (ajustar 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
que se instala en /usr/local
.