Jakie jest dobre wyjaśnienie krok po kroku, jak korzystać z biblioteki Boost w pustym projekcie w Visual Studio?
c++
visual-studio-2010
boost
OlimilOops
źródło
źródło
Odpowiedzi:
Chociaż odpowiedź Nate'a jest już całkiem dobra, zamierzam rozwinąć ją bardziej szczegółowo dla Visual Studio 2010 zgodnie z żądaniem i zawierać informacje na temat kompilacji w różnych opcjonalnych komponentach, które wymagają bibliotek zewnętrznych.
Jeśli używasz tylko bibliotek nagłówków, wszystko, co musisz zrobić, to cofnąć archiwizację pobierania pobudzającego i skonfigurować zmienne środowiskowe. Poniższa instrukcja ustawia zmienne środowiskowe tylko dla Visual Studio, a nie w całym systemie. Pamiętaj, że musisz to zrobić tylko raz.
C:\boost_1_47_0
.).Microsoft.Cpp.<Platform>.user
, a następnie wybierz,Properties
aby otworzyć stronę właściwości do edycji.VC++ Directories
po lewej.Include Directories
sekcję, aby uwzględnić ścieżkę do plików źródłowych doładowania.Jeśli chcesz użyć części wzmocnienia wymagającej budowania, ale żadnej z funkcji wymagających zewnętrznych zależności, to budowanie jej jest dość proste.
C:\boost_1_47_0
.).bootstrap.bat
aby zbudować b2.exe (wcześniej o nazwie bjam).Uruchom b2:
b2 --toolset=msvc-10.0 --build-type=complete stage
;b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
Idź na spacer / obejrzyj film lub 2 / ....
Library Directories
sekcję, aby uwzględnić ścieżkę do danych wyjściowych bibliotek doładowań. (Domyślną wartością dla powyższego przykładu i instrukcji będzieC:\boost_1_47_0\stage\lib
. Zmień nazwę i przenieś katalog, jeśli chcesz mieć obok siebie x86 i x64 (np.<BOOST_PATH>\lib\x86
&<BOOST_PATH>\lib\x64
).Jeśli chcesz opcjonalnych komponentów, masz więcej pracy do zrobienia. To są:
Filtry Boost.IOStreams Bzip2:
C:\bzip2-1.0.6
.).-sBZIP2_SOURCE="C:\bzip2-1.0.6"
gdy uruchomisz b2 w kroku 5.Boost.IOStreams filtry Zlib
C:\zlib-1.2.5
.).-sZLIB_SOURCE="C:\zlib-1.2.5"
gdy uruchomisz b2 w kroku 5.Boost.MPI
project-config.jam
w katalogu<BOOST_PATH>
wynikającym z uruchomienia bootstrap. Dodaj wiersz, który czytausing mpi ;
(zwróć uwagę na spację przed „;”).Boost.Python
Do pełnego zbudowania 32-bitowej wersji biblioteki wymagany jest 32-bitowy Python i podobnie w przypadku wersji 64-bitowej. Jeśli z tego powodu masz zainstalowanych wiele wersji, musisz powiedzieć b2, gdzie znaleźć konkretną wersję i kiedy jej użyć. Jednym ze sposobów jest dokonanie edycji pliku
project-config.jam
w katalogu<BOOST_PATH>
wynikającym z uruchomienia programu ładującego. Dodaj następujące dwa wiersze, dostosowując odpowiednio do ścieżek instalacji i wersji Pythona (zwróć uwagę na spację przed „;”).using python : 2.6 : C:\\Python\\Python26\\python ;
using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;
Zauważ, że taka wyraźna specyfikacja Pythona obecnie powoduje niepowodzenie kompilacji MPI. Musisz więc wykonać osobne budowanie ze specyfikacją i bez niej, aby zbudować wszystko, jeśli budujesz także MPI.
Postępuj zgodnie z drugim zestawem instrukcji powyżej, aby zbudować ulepszenie.
Wsparcie ICU Boost.Regex
C:\icu4c-4_8
.).<ICU_PATH>\source\allinone
.-sICU_PATH="C:\icu4c-4_8"
gdy uruchomisz b2 w kroku 5.źródło
Chociaż instrukcje na stronie internetowej Boost są pomocne, tutaj jest wersja skrócona, która również buduje biblioteki x64.
Zbuduj biblioteki 32-bitowe
Spowoduje to zainstalowanie plików nagłówka Boost pod
C:\Boost\include\boost-(version)
i bibliotek 32-bitowych podC:\Boost\lib\i386
. Zauważ, że domyślną lokalizacją bibliotek jest,C:\Boost\lib
ale będziesz chciał umieścić je wi386
katalogu, jeśli planujesz budować dla wielu architektur.bootstrap
Biegać:
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
Dodaj
C:\Boost\include\boost-(version)
do swojej ścieżki dołączania.C:\Boost\lib\i386
do swojej ścieżki libs.Zbuduj biblioteki 64-bitowe
Spowoduje to zainstalowanie plików nagłówka Boost pod
C:\Boost\include\boost-(version)
i bibliotek 64-bitowych podC:\Boost\lib\x64
. Zauważ, że domyślną lokalizacją bibliotek jest,C:\Boost\lib
ale będziesz chciał umieścić je wx64
katalogu, jeśli planujesz budować dla wielu architektur.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)
do swojej ścieżki dołączania.C:\Boost\lib\x64
do swojej ścieżki libs.źródło
Możesz także wypróbować -j% NUMBER_OF_PROCESSORS% jako argument, że użyje wszystkich twoich rdzeni. Sprawia, że wszystko jest super szybkie w moim quadzie.
źródło
Mógłbym polecić następującą sztuczkę: Utwórz specjalny
boost.props
plikTa procedura ma tę wartość, że zwiększenie jest uwzględniane tylko w projektach, w których chcesz je wyraźnie uwzględnić. Gdy masz nowy projekt, który korzysta ze wzmocnienia, wykonaj:
EDYCJA (po edycji z @ jim-fred):
Plik wynikowy
boost.props
wygląda mniej więcej tak:Zawiera makro użytkownika dla lokalizacji katalogu boost (w tym przypadku D: \ boost_1_53_0) oraz dwa inne parametry: IncludePath i LibraryPath. Instrukcja
#include <boost/thread.hpp>
znalazłaby thread.hpp w odpowiednim katalogu (w tym przypadku D: \ boost_1_53_0 \ boost \ thread.hpp). Katalog „stage \ lib \” może ulec zmianie w zależności od katalogu zainstalowanego.Ten plik boost.props może znajdować się w
D:\boost_1_53_0\
katalogu.źródło
Jakich części wzmocnienia potrzebujesz? Wiele rzeczy jest częścią TR1, który jest dostarczany z Visual Studio, więc możesz po prostu powiedzieć, na przykład:
Według Jamesa powinno to również działać (w C ++ 0x):
źródło
std
przestrzeni nazw, podobnie jak w standardzie C ++ 0x. (Myślę, że prawdopodobnie są również wstd::tr1
przestrzeni nazw, dla kompatybilności wstecznej).Ten wątek istnieje już od jakiegoś czasu i pomyślałem, że dodam coś o tym, jak zbudować Boost tak szybko, jak to możliwe na twoim konkretnym sprzęcie.
Jeśli masz 4 lub 6 rdzeni, użyj odpowiednio -j5 lub -j7. Z pewnością nie jest to standardowa wersja ani -j2, chyba że rzeczywiście masz dwurdzeniowy.
Używam Sandy Bridge Extreme z zegarem 3930K (6-rdzeniowym) na mojej głównej stacji, ale mam 2600k (4-rdzeniowy) na starszej skrzynce zapasowej, a trend jest taki, że otrzymuję najlepsze czasy kompilacji Boost z N + 1 procesy kompilacji, w których N jest liczbą rdzeni fizycznych. N + 2 osiąga punkt malejących zwrotów i czasy rosną.
Uwagi: Hyperthreading jest włączony, 32 GB pamięci RAM DDR3, Samsung 840 EVO SSD.
-j7 na 6 rdzeniach (2 minuty i 51 sekund) (Win7 Ultimate x64) (Visual Studio 2013)
-j6 na 6 rdzeniach (3 minuty i 2 sekundy) (Win7 Ultimate x64) (Visual Studio 2013)
-j8 na 6 rdzeniach (3 minuty i 17 sekund) (Win7 Ultimate x64) (Visual Studio 2013)
Config
Zwracam uwagę, że 64-bitowa kompilacja trwa nieco dłużej, muszę zrobić to samo porównanie dla nich i zaktualizować.
źródło
Również mała uwaga: jeśli chcesz skrócić czas kompilacji, możesz dodać flagę
aby uruchomić dwie równoległe kompilacje jednocześnie. To może zredukować go do oglądania jednego filmu;)
źródło
-j2
, zwiększyłoby wartość Twojej odpowiedzi.Pobierz przyspieszenie z: http://www.boost.org/users/download/ np. Przez svn
Następnie: cmd -> przejdź do katalogu boost („D: \ boostTrunk” - gdzie kasujesz lub pobierasz i rozpakowujesz pakiet): polecenie: bootstrap
stworzyliśmy bjam.exe w („D: \ boostTrunk”) Następnie: polecenie: zestaw narzędzi bjam = wariant msvc-10.0 = debugowanie, zwolnienie wątków = multi link = statyczny (zajmie to trochę czasu ~ 20 min.)
Następnie: Open Visual studio 2010 -> utwórz pusty projekt -> przejdź do właściwości projektu -> ustaw:
Wklej ten kod i sprawdź, czy działa?
Zasoby: https://www.youtube.com/watch?v=5AmwIwedTCM
źródło
Oto, w jaki sposób mogłem użyć wzmocnienia:
Będziesz mógł zbudować swój projekt bez żadnych błędów!
źródło
Instalatory Windows znajdujące się tutaj działały idealnie dla mnie. Podjąłem następujące kroki:
Powodzenia!
źródło
Mały dodatek do bardzo pouczającej głównej odpowiedzi KTC:
Jeśli korzystasz z bezpłatnego programu Visual Studio c ++ 2010 Express i udało Ci się go skompilować do 64-bitowych plików binarnych, a teraz chcesz go użyć do korzystania z 64-bitowej wersji bibliotek Boost, możesz otrzymać 32- biblioteki bitów (przebieg może się oczywiście różnić, ale na mojej maszynie jest to smutny przypadek).
Mógłbym to naprawić, wykonując następujące czynności: pomiędzy krokami opisanymi powyżej jako
Wstawiłem wywołanie „setenv”, aby ustawić środowisko. W przypadku kompilacji wersji powyższe kroki to:
Znalazłem te informacje tutaj: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
źródło
Minimalistyczny przykład na początek w Visual Studio:
1. Pobierz i rozpakuj Boost tutaj.
2. Utwórz pusty projekt Visual Studio, korzystając z przykładowej biblioteki boost, która nie wymaga osobnej kompilacji:
3. We właściwościach projektu Visual Studio ustaw Dodatkowe katalogi Uwzględnij:
Dla bardzo prostego przykładu:
Jak zainstalować biblioteki Boost w Visual Studio
Jeśli nie chcesz korzystać z całej biblioteki doładowań, wystarczy podzbiór:
Korzystanie z podzbioru bibliotek doładowań w systemie Windows
Jeśli chcesz teraz o bibliotekach wymagających kompilacji:
Jak korzystać z bibliotek skompilowanych Boost w systemie Windows
źródło
Ponadto jest coś, co uważam za bardzo przydatne. Użyj zmiennych środowiskowych dla swoich ścieżek doładowania. (Jak ustawić zmienne środowiskowe w systemie Windows, link u dołu dla 7,8,10) Zmienna BOOST_ROOT wydaje się być już powszechnym miejscem i jest ustawiona na ścieżkę root, w której rozpakowujesz boost.
Następnie we Właściwościach, c ++, ogólne, użycie dodatkowych Uwzględnij katalogi
$(BOOST_ROOT)
. Następnie, jeśli / kiedy przejdziesz do nowszej wersji biblioteki kryteriów, możesz zaktualizować zmienną środowiskową, aby wskazywała na tę nowszą wersję. Wraz ze wzrostem liczby projektów korzystaj ze wzmocnienia, nie będziesz musiał aktualizować „Dodatkowych katalogów dołączania” dla wszystkich z nich.Możesz także utworzyć zmienną BOOST_LIB i wskazać ją w miejscu, w którym znajdują się biblioteki lib. Podobnie w przypadku Linkera-> Dodatkowe katalogi biblioteczne nie będziesz musiał aktualizować projektów. Mam kilka starych rzeczy zbudowanych z vs10 i nowych rzeczy z vs14, więc zbudowałem oba smaki boost lib do tego samego folderu. Więc jeśli przeniosę projekt z vs10 na vs14, nie muszę zmieniać ścieżek ulepszeń.
UWAGA: Jeśli zmienisz zmienną środowiskową, nie zadziała ona nagle w otwartym projekcie VS. VS ładuje zmienne przy starcie. Będziesz musiał zamknąć VS i ponownie go otworzyć.
źródło