Ich weiß nicht, wie man Boost mit C++ 0x Compilern baut. Welche Option muss bjam gegeben werden? Sollte die Datei user.config geändert werden? Kann mir jemand helfen?Wie Boost mit C++ 0x Unterstützung erstellen?
Best, Vicente
Ich weiß nicht, wie man Boost mit C++ 0x Compilern baut. Welche Option muss bjam gegeben werden? Sollte die Datei user.config geändert werden? Kann mir jemand helfen?Wie Boost mit C++ 0x Unterstützung erstellen?
Best, Vicente
Ich habe die Antwort gefunden. Ich warte auf ein Feature so etwas wie ‚std‘ und nenne es wie folge:
bjam std=0x
aber derzeit müssen wir das niedrige Niveau Variablen CXXFLAGS verwenden und den spezifischen Compiler-Flags hinzufügen. Zum Beispiel für gcc können wir tun
bjam toolset=gcc cxxflags=-std=gnu++0x
Andere Compiler werden eine andere Einstellung benötigen.
für ein neues Boost.Build Feature warten, können Sie auch Ihr eigenes Toolset wie folgt definieren: Fügen Sie die user.config oder site.config Datei
using gcc
: std0x
: "/usr/bin/g++" # your path to the C++0x compiler
: <cxxflags>-std=gnu++0x
;
Und rufen nun als
bjam toolset=gcc-std0x
Mit neueren Boost-Versionen ist es ./b2 toolset = gcc cxxflags = -std = gnu ++ 0x. Bei neueren Versionen von gcc verwenden Sie -std = gnu ++ 11 –
Mit neueren Versionen können Sie 'std = C++ 11' verwenden, wenn Sie die GNU-Erweiterungen nicht aktivieren möchten. –
kam ich einen Artikel über Boost Klappern zum Kompilieren: http://blog.llvm.org/2010/05/clang-builds-boost.html. Es könnte möglich sein, die dort vorgeschlagenen Änderungen anzupassen, um Boost mit Boost.Jam zu Ihrem bevorzugten C++ 0x-Compiler zu kompilieren.
Hallo, ich sehe nichts auf dieser Seite, die sich auf C++ 0x bezieht. Könnten Sie bitte Ihre Antwort klären? –
Außerdem können Sie wie folgt change compilation flags for one file:
exe test : test.cpp : <cxxflags>-std=gnu++0x ;
zu kompilieren Klirren, verwenden Sie die cxxflags
und linkflags
:
./b2 \
...
cxxflags="-std=c++0x -stdlib=libc++" \
linkflags="-stdlib=libc++" \
...
eine -v
-cxxflags
Passing ist auch hilfreich bei der Fehlersuche.
Verwendung so etwas wie dieses:
./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
Die -j12 für parallele (12 Threads) bauen Verwendung -std=c++11
für eine bessere Kompatibilität und -std=gnu++11
für die Gnu-Erweiterungen (nur für gcc)
wenn boost :: mpi nicht erstellt wird (siehe die Ausgabe des obigen Befehls) -> editiere den user-config.jam
wenn du nur bestimmte Komponenten erstellen willst: hinzufügen:
--with-libraries=system,thread,serialization
zum Beispiel
Hier ist ein angepasstes Skript aus meinem framework von travis (justieren 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
die in /usr/local
installiert.
Wollte dies ab boost 1.48 und gcc-4 zu beachten.5, ist das Kompilieren mit C++ 0x für Bibliotheken wie boost :: filesystem notwendig. Ansonsten werden Funktionen wie copy_file beim Linken nicht gefunden. – alfC
Sie funktionieren, wenn Sie das Makro definieren: '' #define BOOST_NO_CXX11_SCOPED_ENUMS'' vor dem Einschluss von '' filesystem.hpp'' – Gabriel