380 Stimmen

Wie man Boost in Visual Studio 2010 verwendet

Was ist eine gute Schritt-für-Schritt-Erklärung, wie Sie die Boost-Bibliothek in einem leeren Projekt in Visual Studio verwenden?

517voto

KTC Punkte 8899

Während Nate's Antwort ist bereits ziemlich gut, ich werde es speziell für Visual Studio 2010 erweitern, wie gewünscht, und Informationen zum Kompilieren in den verschiedenen optionalen Komponenten enthalten, die externe Bibliotheken erfordern.

Wenn Sie nur Header-Bibliotheken verwenden, müssen Sie lediglich den Boost-Download entpacken und die Umgebungsvariablen einrichten. Die folgende Anleitung setzt die Umgebungsvariablen nur für Visual Studio und nicht für das gesamte System. Beachten Sie, dass Sie dies nur einmal tun müssen.

  1. Entpacken Sie die neueste Version von boost (derzeit 1.47.0) in ein Verzeichnis Ihrer Wahl (z.B. C:\boost_1_47_0 ).
  2. Erstellen Sie ein neues leeres Projekt in Visual Studio.
  3. Öffnen Sie den Property Manager und erweitern Sie eine der Konfigurationen für die Plattform Ihrer Wahl.
  4. Auswählen und rechtsklicken Microsoft.Cpp.<Platform>.user und wählen Sie Properties um die Eigenschaftsseite zur Bearbeitung zu öffnen.
  5. Wählen Sie VC++ Directories auf der linken Seite.
  6. Bearbeiten Sie die Include Directories Abschnitt den Pfad zu Ihren Boost-Quelldateien ein.
  7. Wiederholen Sie die Schritte 3 - 6 für eine andere Plattform Ihrer Wahl, falls erforderlich.

Wenn Sie den Teil von boost verwenden wollen, der gebaut werden muss, aber keine der Funktionen, die externe Abhängigkeiten erfordern, dann ist das Bauen ziemlich einfach.

  1. Entpacken Sie die neueste Version von boost (derzeit 1.47.0) in ein Verzeichnis Ihrer Wahl (z.B. C:\boost_1_47_0 ).
  2. Starten Sie die Visual Studio-Eingabeaufforderung für die Plattform Ihrer Wahl und navigieren Sie zu dem Ort, an dem sich boost befindet.
  3. Laufen: bootstrap.bat um b2.exe (früher bjam genannt) zu erstellen.
  4. Lauf b2:

    • Win32: b2 --toolset=msvc-10.0 --build-type=complete stage ;
    • x64: b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage

Spazieren gehen / einen oder 2 Filme ansehen / ....

  1. Führen Sie die Schritte 2 - 6 der obigen Anweisung aus, um die Umgebungsvariablen zu setzen.
  2. Bearbeiten Sie die Library Directories Abschnitt den Pfad zur Ausgabe Ihrer Boost-Bibliotheken ein. (Die Vorgabe für das Beispiel und die obigen Anweisungen wäre C:\boost_1_47_0\stage\lib . Benennen Sie das Verzeichnis zuerst um und verschieben Sie es, wenn Sie x86 und x64 nebeneinander haben möchten (z. B. nach <BOOST_PATH>\lib\x86 & <BOOST_PATH>\lib\x64 ).
  3. Wiederholen Sie die Schritte 2 - 6 für eine andere Plattform Ihrer Wahl, falls erforderlich.

Wenn Sie die optionalen Komponenten wünschen, müssen Sie mehr Arbeit investieren. Diese sind:

  • Boost.IOStreams Bzip2-Filter
  • Boost.IOStreams Zlib-Filter
  • Boost.MPI
  • Boost.Python
  • Boost.Regex ICU-Unterstützung

Boost.IOStreams Bzip2-Filter:

  1. Entpacken Sie die neueste Version der bzip2-Bibliothek (derzeit 1.0.6) in ein Verzeichnis Ihrer Wahl (z.B. C:\bzip2-1.0.6 ).
  2. Befolgen Sie die zweite Reihe der obigen Anweisungen zur Erstellung von boost, fügen Sie jedoch die Option -sBZIP2_SOURCE="C:\bzip2-1.0.6" wenn Sie b2 in Schritt 5 ausführen.

Boost.IOStreams Zlib-Filter

  1. Entpacken Sie die neueste Version der zlib-Bibliothek (derzeit 1.2.5) in ein Verzeichnis Ihrer Wahl (z. B. C:\zlib-1.2.5 ).
  2. Befolgen Sie die zweite Reihe der obigen Anweisungen zur Erstellung von boost, fügen Sie jedoch die Option -sZLIB_SOURCE="C:\zlib-1.2.5" wenn Sie b2 in Schritt 5 ausführen.

Boost.MPI

  1. Installieren Sie eine MPI-Distribution wie das Microsoft Compute Cluster Pack.
  2. Führen Sie die Schritte 1 - 3 der zweiten Anleitung oben aus, um den Boost aufzubauen.
  3. Bearbeiten Sie die Datei project-config.jam im Verzeichnis <BOOST_PATH> die sich aus der Ausführung von Bootstrap ergeben. Fügen Sie eine Zeile ein, die lautet using mpi ; (beachten Sie das Leerzeichen vor dem ';').
  4. Befolgen Sie die restlichen Schritte der zweiten Anleitung oben, um den Boost zu bauen. Wenn die automatische Erkennung der MPI-Installation fehlschlägt, müssen Sie die entsprechende Build-Datei suchen und ändern, um an der richtigen Stelle nach MPI zu suchen.

Boost.Python

  1. Installieren Sie eine Python-Distribution wie ActiveState's ActivePython. Stellen Sie sicher, dass sich die Python-Installation in Ihrem PATH befindet.

  2. Um die 32-Bit-Version der Bibliothek vollständig zu erstellen, ist 32-Bit-Python erforderlich, und das Gleiche gilt für die 64-Bit-Version. Wenn Sie aus diesem Grund mehrere Versionen installiert haben, müssen Sie b2 mitteilen, wo die jeweilige Version zu finden ist und wann welche Version zu verwenden ist. Eine Möglichkeit, das zu tun, wäre, die Datei project-config.jam im Verzeichnis <BOOST_PATH> die sich aus der Ausführung von Bootstrap ergeben. Fügen Sie die folgenden zwei Zeilen ein und passen Sie sie an Ihre Python-Installationspfade und -versionen an (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 zu einem Fehlschlag bei der MPI-Erstellung führt. Sie müssen also einige separate Builds mit und ohne Spezifikation durchführen, um alles zu bauen, wenn Sie auch MPI bauen wollen.

  3. Befolgen Sie die zweite Reihe von Anweisungen oben, um Boost zu bauen.

Boost.Regex ICU-Unterstützung

  1. Entpacken Sie die neueste Version der ICU4C-Bibliothek (derzeit 4.8) in ein Verzeichnis Ihrer Wahl (z. B. C:\icu4c-4_8 ).
  2. Öffnen Sie die Visual Studio Solution in <ICU_PATH>\source\allinone .
  3. Build All sowohl für Debug- als auch für Release-Konfiguration für die Plattform Ihrer Wahl. Es können sein ein Problem bei der Erstellung neuerer Versionen von ICU4C mit Visual Studio 2010, wenn sich die Ausgaben für Debug- und Release-Builds im selben Verzeichnis befinden (was das Standardverhalten ist). Ein möglicher Workaround ist ein Build All (von Debug-Build sagen) zu tun und dann ein Rebuild all in der zweiten Konfiguration (z. B. Release-Build) zu tun.
  4. Wenn Sie für x64 erstellen, müssen Sie ein x64-Betriebssystem verwenden, da nach der Erstellung einige der 64-Bit-Anwendungen ausgeführt werden müssen.
  5. Entfernen Sie optional das Quellverzeichnis, wenn Sie fertig sind.
  6. Befolgen Sie die zweite Reihe der obigen Anweisungen zur Erstellung von boost, fügen Sie jedoch die Option -sICU_PATH="C:\icu4c-4_8" wenn Sie b2 in Schritt 5 ausführen.

159voto

Nate Punkte 18263

Während die Anweisungen auf der Boost-Website sind hilfreich, hier ist eine komprimierte Version, die auch x64-Bibliotheken baut.

  • Sie müssen dies nur tun, wenn Sie eine der Bibliotheken verwenden, die in Abschnitt 3 der Anleitungsseite. (Z.B. erfordert die Verwendung von Boost.Filesystem eine Kompilierung.) Wenn Sie keine dieser Komponenten verwenden, entpacken Sie einfach und los geht's.

Erstellen Sie die 32-Bit-Bibliotheken

Dies installiert die Boost-Header-Dateien unter C:\Boost\include\boost-(version) und die 32-Bit-Bibliotheken unter C:\Boost\lib\i386 . Beachten Sie, dass der Standardspeicherort für die Bibliotheken C:\Boost\lib aber Sie sollten sie unter einer i386 Verzeichnis, wenn Sie planen, für mehrere Architekturen zu bauen.

  1. Entpacken Sie Boost in ein neues Verzeichnis.

  2. Starten Sie eine 32-Bit-MSVC-Eingabeaufforderung und wechseln Sie in das Verzeichnis, in das Boost entpackt wurde.

  3. Laufen: bootstrap

  4. Laufen: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install

    • Für Visual Studio 2012, verwenden Sie toolset=msvc-11.0
    • Für Visual Studio 2010, verwenden Sie toolset=msvc-10.0
    • Für Visual Studio 2017, verwenden Sie toolset=msvc-14.1
  5. hinzufügen C:\Boost\include\boost-(version) zu Ihrem Include-Pfad hinzufügen.

  6. hinzufügen C:\Boost\lib\i386 in den Pfad zu den Bibliotheken aufnehmen.

Erstellen Sie die 64-Bit-Bibliotheken

Dies installiert die Boost-Header-Dateien unter C:\Boost\include\boost-(version) und die 64-Bit-Bibliotheken unter C:\Boost\lib\x64 . Beachten Sie, dass der Standardspeicherort für die Bibliotheken C:\Boost\lib aber Sie sollten sie unter einer x64 Verzeichnis, wenn Sie planen, für mehrere Architekturen zu bauen.

  1. Entpacken Sie Boost in ein neues Verzeichnis.
  2. Starten Sie eine 64-Bit-MSVC-Eingabeaufforderung und wechseln Sie in das Verzeichnis, in das Boost entpackt wurde.
  3. Laufen: bootstrap
  4. Laufen: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
    • Für Visual Studio 2012, verwenden Sie toolset=msvc-11.0
    • Für Visual Studio 2010, verwenden Sie toolset=msvc-10.0
  5. hinzufügen C:\Boost\include\boost-(version) zu Ihrem Include-Pfad hinzufügen.
  6. hinzufügen C:\Boost\lib\x64 in den Pfad zu den Bibliotheken aufnehmen.

21voto

Aaron Stainback Punkte 3294

Sie können auch -j%NUMBER_OF_PROCESSORS% als Argument verwenden, dann werden alle Ihre Kerne verwendet. Macht die Dinge super schnell auf meinem Quad-Core.

14voto

fredoverflow Punkte 245881

Welche Teile von Boost benötigen Sie? Vieles ist Teil von TR1, das mit Visual Studio ausgeliefert wird, so dass Sie zum Beispiel einfach sagen könnten:

#include <tr1/memory>

using std::tr1::shared_ptr;

Laut James sollte dies auch funktionieren (in C++0x):

#include <memory>

using std::shared_ptr;

7voto

codenheim Punkte 19712

Dieser Thread ist schon eine Weile alt, und ich dachte, ich füge etwas darüber hinzu, WIE man Boost so schnell wie möglich auf der eigenen Hardware erstellt.

Wenn Sie einen 4 oder 6-Kern haben, verwenden Sie -j5 bzw. -j7. Auf keinen Fall den Standard-Build oder -j2, es sei denn, Sie haben tatsächlich einen Dual-Core.

Ich führe eine Sandy Bridge Extreme mit stock getaktet 3930K (6-Kern) auf meiner Hauptstation, sondern haben eine 2600k (4-Kern) auf älteren Backup-Box, und der Trend ist ich die besten Boost Kompilierzeiten mit N + 1 Build-Prozesse, wo N die Anzahl der physischen Kerne ist. N + 2 erreicht einen Punkt der abnehmenden Erträge und die Zeiten gehen nach oben.

Anmerkungen: Hyperthreading ist aktiviert, 32GB RAM DDR3, Samsung 840 EVO SSD.

-j7 auf 6-Core (2 Minuten und 51 Sekunden) (Win7 Ultimate x64)(Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j7 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 2
Seconds           : 51
Milliseconds      : 128
Ticks             : 1711281830
TotalDays         : 0.0019806502662037
TotalHours        : 0.0475356063888889
TotalMinutes      : 2.85213638333333
TotalSeconds      : 171.128183
TotalMilliseconds : 171128.183

-j6 auf 6-Kern (3 Minuten und 2 Sekunden) (Win7 Ultimate x64)(Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j6 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 2
Milliseconds      : 809
Ticks             : 1828093904
TotalDays         : 0.00211584942592593
TotalHours        : 0.0507803862222222
TotalMinutes      : 3.04682317333333
TotalSeconds      : 182.8093904
TotalMilliseconds : 182809.3904

-j8 auf 6-Kern (3 Minuten und 17 Sekunden) (Win7 Ultimate x64)(Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j8 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 17
Milliseconds      : 652
Ticks             : 1976523915
TotalDays         : 0.00228764342013889
TotalHours        : 0.0549034420833333
TotalMinutes      : 3.294206525
TotalSeconds      : 197.6523915
TotalMilliseconds : 197652.3915

-j7 build on 6-core

Konfigurieren Sie

Building the Boost C++ Libraries.

Performing configuration checks

    - 32-bit                   : yes (cached)
    - arm                      : no  (cached)
    - mips1                    : no  (cached)
    - power                    : no  (cached)
    - sparc                    : no  (cached)
    - x86                      : yes (cached)
    - has_icu builds           : no  (cached)
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
    - zlib                     : no  (cached)
    - iconv (libc)             : no  (cached)
    - iconv (separate)         : no  (cached)
    - icu                      : no  (cached)
    - icu (lib64)              : no  (cached)
    - message-compiler         : yes (cached)
    - compiler-supports-ssse3  : yes (cached)
    - compiler-supports-avx2   : yes (cached)
    - gcc visibility           : no  (cached)
    - long double support      : yes (cached)
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
    - zlib                     : no  (cached)

Ich stelle fest, dass der 64-Bit-Build etwas länger dauert. Ich muss den gleichen Vergleich für diese Versionen durchführen und sie aktualisieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X