Jest to biblioteka będąca potocznie nazywaną „standard 2.0 dla C++”, albo „poczekalnia do standardu C++”. Umożliwia bardzo wiele rzeczy, które robi się przy jej pomocy bardzo wygodnie i w dużym stopniu niezależnie od systemu operacyjnego (Windows czy Linux czy inne). Na czas pisania artykułu mamy wersję 1.70 niniejszej biblioteki.
Przed przejściem dalej należy odpowiedzieć sobie na pytanie czy na pewno potrzebuję ją budować od nowa całą, a może da się zrobić to prościej? Większość komponentów/podbibliotek to tylko nagłówki (ang. header-only), czyli aby jej użyć nie trzeba budować. Gdy Twoja biblioteka musi być zbudowana to jeśli jesteś użytkownikiem linuxów to wiesz jak zainstalować z repozytorium (co prawda bardzo rzadko jest najnowsza wersja). Jeśli z kolei użytkownikiem Windowsa masz dostępne na stronie pobierania „Prebuilt windows binaries” (oczywiście tylko dla wersji Visual Studio, dla innych kompilatorów musisz sobie zbudować).
Jeśli z jakiegoś powodu ww. warianty Ci nie wystarczają zapraszam dalej.
Przed instalacją należy bibliotekę pobrać (najlepiej ze strony projektu) i rozpakować. Potem należy przejrzeć instrukcję „zaczynamy” (ang. „Getting started”) na swoim systemie. Załóżmy, że główny katalog rozpakowanej biblioteki to $(BOOST).
Instalacja na Windowsie przy pomocy MinGw
Jest to nieszablonowy przypadek, dlatego go opiszę.
- Musimy mieć nasz kompilator na zmiennej środowiskowej PATH.
- Budujemy dla mingw (mingw to gcc dla Windows, dlatego toolset=gcc):
- $(BOOST)\tools\build\b2.exe toolset=gcc –prefix=”gdzieChcemyZbudowac\” link=static install
powyższa opcja skompiluje i zainstaluje nam całego boosta, jeśli nie chcemy całego: - Możemy wyświetlić jakie są biblioteki:
$(BOOST)\tools\build\b2.exe –show-libraries
mając tę listę możemy zbudować wybrane komponenty np. tak:
$(BOOST)\tools\build\b2.exe –with-program_options –with-system –with-filesystem toolset=gcc –prefix=”gdzieChcemyZbudowac\” link=static install - Jak zbudujemy pojawi się nam gdzie jak użyć includów i gdzie są biblioteki skompilowane np.:
The following directory should be added to compiler include paths:
C:\Users\user\Desktop\boost_1_70_0
The following directory should be added to linker library paths:
C:\Users\user\Desktop\boost_1_70_0\stage\lib - Gotowe!
- $(BOOST)\tools\build\b2.exe toolset=gcc –prefix=”gdzieChcemyZbudowac\” link=static install
Budowanie i instalacja na linuxie
Budowanie pod linuxem jest proste i w pełni opisane w instrukcji.
Aby zbudować boosta w pełni w domyślnej lokalizacji (do której należy mieć uprawnienia administratora) wystarczy najzwyczajniej w świecie zawołać komendy:
./bootstrap.sh ./b2 install
Jeśli chcemy jednak zainstalować bibliotę w innej lokalizacji musimy użyć
--prefix=lokalizacja/gdzie/chcemy/zainstalować
Jeśli też nie potrzebujemy budować wszystkich bibliotek (bo nie będziemy wszystkich używać) polecam użyć opcji:
--with-libraries=biblioteka1,biblioteka2
aby się dowiedzieć jakie mamy biblioteki można zawołać:
./bootstrap.sh --show-libraries
w moim przypadku dało to listę bibliotek (skróciłem wydruk wielolinijkowy):
atomic, chrono, container, context, contract, coroutine, date_time, exception, fiber, filesystem, graph, graph_parallel, headers, iostreams, locale, log, math, mpi, program_options, python, random, regex, serialization, stacktrace, system, test, thread, timer, type_erasure, wave
Wiedząc to wszystko możemy zbudować kilka bibliotek w interesującej nas lokalizacji:
./bootstrap.sh --with-libraries=stacktrace,program_options,container,system --prefix=/home/agh/Desktop/boost_zbudowany/
mając to możemy komendę budującą jw., ale ja wolę sobie zbudować biblioteki statycznie:
./b2 link=static install
w rezultacie pojawią się biblioteki we wskazanym katalogu. Teraz należy jeszcze kompilując nasz program podać ścieżki do nagłówków i skompilowanych bibliotek.
Program przy użyciu boost
Możemy sobie pobrać przykład z program_options albo otworzyć z
$(katalogZPobranymBoostem)/libs/program_options/example/first.cpp
Mając gotowy kod możemy zbudować, przykładowo:
g++ first.cpp -I/home/agh/Desktop/boost_zbudowany/include -L/home/agh/Desktop/boost_zbudowany -lboost_program_options -o program.exe
i wszystko działa!
Dorzucenie części boosta do projektu
Może się zdarzyć, że chcemy tylko jedną bibliotekę dorzucić do projektu, nie chcemy dorzucać zbt dużej ilości zależności (cały boost to ponad 100 Mb), dlatego można użyć:
./b2 tools/bcp # to nam zbuduje to narzędzie
Następnie możemy sobie go użyć:
${sciezkaDoBcb}/bcp boost/naglowek.hpp sciezka/gdzie/wrzucic/zaleznosci