Was ist eine gute schrittweise Erklärung zur Verwendung der Boost-Bibliothek in einem leeren Projekt in Visual Studio?
c++
visual-studio-2010
boost
OlimilOops
quelle
quelle
Antworten:
Obwohl Nates Antwort bereits ziemlich gut ist, werde ich sie wie gewünscht genauer für Visual Studio 2010 erweitern und Informationen zum Kompilieren in die verschiedenen optionalen Komponenten aufnehmen, für die externe Bibliotheken erforderlich sind.
Wenn Sie nur Header-Bibliotheken verwenden, müssen Sie lediglich den Boost-Download aufheben und die Umgebungsvariablen einrichten. Mit der folgenden Anweisung werden die Umgebungsvariablen nur für Visual Studio und nicht für das gesamte System festgelegt. Beachten Sie, dass Sie dies nur einmal tun müssen.
C:\boost_1_47_0
. B. ).Microsoft.Cpp.<Platform>.user
SieProperties
mit der rechten Maustaste und wählen Sie , um die Eigenschaftsseite zum Bearbeiten zu öffnen.VC++ Directories
links.Include Directories
Abschnitt so, dass er den Pfad zu Ihren Boost-Quelldateien enthält.Wenn Sie den Teil des Boosts verwenden möchten, für den eine Erstellung erforderlich ist, aber keine der Funktionen, für die externe Abhängigkeiten erforderlich sind, ist die Erstellung recht einfach.
C:\boost_1_47_0
. B. ).bootstrap.bat
um b2.exe (zuvor bjam genannt) zu erstellen.Führen Sie b2 aus:
b2 --toolset=msvc-10.0 --build-type=complete stage
;b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
Gehen Sie spazieren / schauen Sie sich einen Film an oder 2 / ....
Library Directories
Abschnitt so, dass er den Pfad zur Ausgabe Ihrer Boost-Bibliotheken enthält. (Die Standardeinstellung für das obige Beispiel und die obigen Anweisungen wäreC:\boost_1_47_0\stage\lib
. Benennen Sie das Verzeichnis um und verschieben Sie es zuerst, wenn Sie x86 und x64 nebeneinander haben möchten (z. B. nach<BOOST_PATH>\lib\x86
&<BOOST_PATH>\lib\x64
).Wenn Sie die optionalen Komponenten möchten, haben Sie mehr Arbeit zu erledigen. Diese sind:
Boost.IOStreams Bzip2-Filter:
C:\bzip2-1.0.6
. B. ).-sBZIP2_SOURCE="C:\bzip2-1.0.6"
wenn Sie in Schritt 5 b2 ausführen.Boost.IOStreams Zlib-Filter
C:\zlib-1.2.5
. B. ).-sZLIB_SOURCE="C:\zlib-1.2.5"
wenn Sie in Schritt 5 b2 ausführen.Boost.MPI
project-config.jam
in dem Verzeichnis<BOOST_PATH>
, das beim Ausführen von Bootstrap entstanden ist. Fügen Sie in einer Zeile Folgendes hinzuusing mpi ;
(beachten Sie das Leerzeichen vor dem ';').Boost.Python
Um die 32-Bit-Version der Bibliothek vollständig zu erstellen, ist 32-Bit-Python erforderlich, ähnlich wie bei der 64-Bit-Version. Wenn Sie aus diesem Grund mehrere Versionen installiert haben, müssen Sie b2 mitteilen, wo sich eine bestimmte Version befindet und wann welche verwendet werden soll. Eine Möglichkeit, dies zu tun, besteht darin, die Datei
project-config.jam
in dem Verzeichnis zu bearbeiten, das<BOOST_PATH>
sich aus der Ausführung von Bootstrap ergibt. Fügen Sie in den folgenden zwei Zeilen die entsprechenden Einstellungen für Ihre Python-Installationspfade und -Versionen hinzu (beachten Sie das Leerzeichen vor dem ';').using python : 2.6 : C:\\Python\\Python26\\python ;
using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;
Beachten Sie, dass eine solche explizite Python-Spezifikation derzeit dazu führt, dass die MPI-Erstellung fehlschlägt. Sie müssen also ein separates Gebäude mit und ohne Spezifikation erstellen, um alles zu erstellen, wenn Sie auch MPI erstellen.
Befolgen Sie die zweiten Anweisungen oben, um den Boost aufzubauen.
Boost.Regex ICU-Unterstützung
C:\icu4c-4_8
. B. ).<ICU_PATH>\source\allinone
.-sICU_PATH="C:\icu4c-4_8"
wenn Sie in Schritt 5 b2 ausführen.quelle
Während die Anweisungen auf der Boost-Website hilfreich sind, finden Sie hier eine komprimierte Version, die auch x64-Bibliotheken erstellt.
Erstellen Sie die 32-Bit-Bibliotheken
Dadurch werden die Boost-Header-Dateien unter
C:\Boost\include\boost-(version)
und die 32-Bit-Bibliotheken unter installiertC:\Boost\lib\i386
. Beachten Sie, dass der Standardspeicherort für die Bibliotheken istC:\Boost\lib
, Sie sie jedoch in eini386
Verzeichnis stellen möchten, wenn Sie für mehrere Architekturen erstellen möchten .bootstrap
Lauf:
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install
toolset=msvc-11.0
toolset=msvc-10.0
toolset=msvc-14.1
Fügen Sie
C:\Boost\include\boost-(version)
Ihrem Include-Pfad hinzu.C:\Boost\lib\i386
Ihrem libs-Pfad hinzu.Erstellen Sie die 64-Bit-Bibliotheken
Dadurch werden die Boost-Header-Dateien unter
C:\Boost\include\boost-(version)
und die 64-Bit-Bibliotheken unter installiertC:\Boost\lib\x64
. Beachten Sie, dass der Standardspeicherort für die Bibliotheken istC:\Boost\lib
, Sie sie jedoch in einx64
Verzeichnis stellen möchten, wenn Sie für mehrere Architekturen erstellen möchten .bootstrap
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
toolset=msvc-11.0
toolset=msvc-10.0
C:\Boost\include\boost-(version)
Ihrem Include-Pfad hinzu.C:\Boost\lib\x64
Ihrem libs-Pfad hinzu.quelle
Sie können auch -j% NUMBER_OF_PROCESSORS% als Argument verwenden, um alle Ihre Kerne zu verwenden. Macht die Dinge auf meinem Quad-Core superschnell.
quelle
Ich könnte den folgenden Trick empfehlen: Erstellen Sie eine spezielle
boost.props
DateiDiese Prozedur hat den Wert, dass Boost nur in Projekten enthalten ist, in denen Sie ihn explizit einschließen möchten. Wenn Sie ein neues Projekt haben, das Boost verwendet, gehen Sie wie folgt vor:
BEARBEITEN (folgende Bearbeitung von @ jim-fred):
Die resultierende
boost.props
Datei sieht ungefähr so aus ...Es enthält ein Benutzermakro für den Speicherort des Boost-Verzeichnisses (in diesem Fall D: \ boost_1_53_0) und zwei weitere Parameter: IncludePath und LibraryPath. Eine Anweisung
#include <boost/thread.hpp>
würde thread.hpp im entsprechenden Verzeichnis finden (in diesem Fall D: \ boost_1_53_0 \ boost \ thread.hpp). Das Verzeichnis 'stage \ lib \' kann sich je nach installiertem Verzeichnis ändern.Diese Datei boost.props befindet sich möglicherweise im
D:\boost_1_53_0\
Verzeichnis.quelle
Welche Teile von Boost benötigen Sie? Viele Dinge sind Teil von TR1, das mit Visual Studio geliefert wird. Man könnte also einfach sagen, zum Beispiel:
Laut James sollte dies auch funktionieren (in C ++ 0x):
quelle
std
, wie im C ++ 0x-Standard in den Namespace verschoben . (Ich denke, sie befinden sichstd::tr1
aus Gründen der Abwärtskompatibilität wahrscheinlich auch im Namespace).Dieser Thread gibt es schon eine Weile und ich dachte, ich würde etwas darüber hinzufügen, wie Boost so schnell wie möglich auf Ihrer spezifischen Hardware erstellt werden kann.
Wenn Sie einen 4- oder 6-Kern haben, verwenden Sie -j5 bzw. -j7. Sicherlich nicht der Standard-Build oder -j2, es sei denn, Sie haben tatsächlich einen Dual-Core.
Ich verwende eine Sandy Bridge Extreme mit 3930K (6-Core) auf meiner Hauptstation, habe aber eine 2600k (4-Core) auf einer älteren Backup-Box und der Trend ist, dass ich mit N + die besten Boost-Kompilierungszeiten erhalte 1 Build-Prozesse, wobei N die Anzahl der physischen Kerne ist. N + 2 erreicht einen Punkt abnehmender Renditen und die Zeiten steigen.
Hinweise: Hyperthreading ist aktiviert, 32 GB RAM DDR3, Samsung 840 EVO SSD.
-j7 auf 6-Core (2 Minuten und 51 Sekunden) (Win7 Ultimate x64) (Visual Studio 2013)
-j6 auf 6-Core (3 Minuten und 2 Sekunden) (Win7 Ultimate x64) (Visual Studio 2013)
-j8 auf 6-Core (3 Minuten und 17 Sekunden) (Win7 Ultimate x64) (Visual Studio 2013)
Konfig
Ich stelle fest, dass der 64-Bit-Build etwas länger dauert. Ich muss den gleichen Vergleich für diese durchführen und aktualisieren.
quelle
Auch ein kleiner Hinweis: Wenn Sie die Kompilierungszeit verkürzen möchten, können Sie das Flag hinzufügen
zwei parallele Builds gleichzeitig ausführen. Dies könnte es auf das Ansehen eines Films reduzieren;)
quelle
-j2
würde den Wert Ihrer Antwort erhöhen.Laden Sie boost von folgender Adresse herunter: http://www.boost.org/users/download/, z. B. von svn
Danach: cmd -> gehe zum Boost-Verzeichnis ("D: \ boostTrunk" - wo du das Paket auscheckst oder herunterlädst und extrahierst): Befehl: bootstrap
Wir haben bjam.exe in ("D: \ boostTrunk") erstellt. Danach: Befehl: bjam toolset = msvc-10.0 Variante = Debug, Release Threading = Multi Link = Statisch (Es wird einige Zeit ~ dauern.)
Danach: Öffnen Sie Visual Studio 2010 -> erstellen Sie ein leeres Projekt -> gehen Sie zu den Projekteigenschaften -> setzen Sie:
Diesen Code einfügen und prüfen, ob er funktioniert?
Ressourcen: https://www.youtube.com/watch?v=5AmwIwedTCM
quelle
So konnte ich Boost nutzen:
Sie können Ihr Projekt fehlerfrei erstellen!
quelle
Die hier befindlichen Windows-Installationsprogramme haben für mich perfekt funktioniert. Ich habe folgende Schritte unternommen:
Viel Glück!
quelle
Eine kleine Ergänzung zu KTCs sehr informativer Hauptantwort:
Wenn Sie das kostenlose Visual Studio c ++ 2010 Express verwenden und es geschafft haben, dieses zum Kompilieren von 64-Bit-Binärdateien zu verwenden, und dies nun zur Verwendung einer 64-Bit-Version der Boost-Bibliotheken verwenden möchten, erhalten Sie möglicherweise 32- Bit-Bibliotheken (Ihr Kilometerstand kann natürlich variieren, aber auf meinem Computer ist dies der traurige Fall).
Ich könnte dies folgendermaßen beheben: Zwischen den oben beschriebenen Schritten als
Ich habe einen Aufruf von 'setenv' eingefügt, um die Umgebung festzulegen. Für einen Release-Build werden die folgenden Schritte wie folgt ausgeführt:
Ich habe diese Informationen hier gefunden: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
quelle
Ein minimalistisches Beispiel für den Einstieg in Visual Studio:
1. Laden Sie Boost hier herunter und entpacken Sie es.
2.Erstellen Sie ein leeres Visual Studio-Projekt mithilfe einer Beispiel-Boost-Bibliothek, für die keine separate Kompilierung erforderlich ist:
3. Legen Sie in Ihren Visual Studio-Projekteigenschaften die zusätzlichen Include-Verzeichnisse fest:
Für ein sehr einfaches Beispiel:
So installieren Sie die Boost-Bibliotheken in Visual Studio
Wenn Sie nicht die gesamte Boost-Bibliothek verwenden möchten, nur eine Teilmenge:
Verwenden einer Teilmenge der Boost-Bibliotheken in Windows
Wenn Sie jetzt speziell auf die Bibliotheken eingehen möchten, die kompiliert werden müssen:
Verwendung der kompilierten Boost-Bibliotheken in Windows
quelle
Darüber hinaus finde ich etwas sehr nützlich. Verwenden Sie Umgebungsvariablen für Ihre Boost-Pfade. (So legen Sie Umgebungsvariablen in Windows fest, Link unten für 7,8,10) Die Variable BOOST_ROOT scheint nicht mehr alltäglich zu sein und wird auf den Stammpfad gesetzt, in dem Sie den Boost entpacken.
Dann in Eigenschaften, c ++, allgemein, Zusätzliche Include-Verzeichnisse verwenden
$(BOOST_ROOT)
. Wenn Sie dann zu einer neueren Version der Boost-Bibliothek wechseln, können Sie Ihre Umgebungsvariable so aktualisieren, dass sie auf diese neuere Version verweist. Wenn Sie mehr Projekte verwenden, müssen Sie Boost verwenden. Sie müssen nicht für alle Projekte die zusätzlichen Include-Verzeichnisse aktualisieren.Sie können auch eine BOOST_LIB-Variable erstellen und darauf verweisen, wo die Bibliotheken bereitgestellt werden. Ebenso müssen Sie für die Linker-> Additional Library Directories keine Projekte aktualisieren. Ich habe einige alte Sachen mit vs10 und neue Sachen mit vs14 gebaut, also habe ich beide Varianten der Boost Lib in den gleichen Ordner gebaut. Wenn ich also ein Projekt von vs10 auf vs14 verschiebe, muss ich die Boost-Pfade nicht ändern.
ANMERKUNG: Wenn Sie eine Umgebungsvariable ändern, funktioniert sie in einem geöffneten VS-Projekt nicht plötzlich. VS lädt beim Start Variablen. Sie müssen also VS schließen und erneut öffnen.
quelle