boost Samouczek
Rozpoczęcie pracy z doładowaniem
Szukaj…
Uwagi
Co to jest Boost?
Boost to duży zbiór bezpłatnych, wysokiej jakości bibliotek C ++, które obejmują szeroki zakres tematów. Często jest uważany za „drugą standardową bibliotekę” dla C ++, ponieważ wiele typowych problemów w C ++ można rozwiązać za pomocą Boost.
From boost.org :
Boost zapewnia bezpłatne recenzowane przenośne biblioteki źródeł C ++.
Podkreślamy biblioteki, które dobrze współpracują ze standardową biblioteką C ++. Biblioteki rozszerzeń mają być bardzo przydatne i przydatne w szerokim spektrum zastosowań. Licencja Boost zachęca zarówno do użytku komercyjnego, jak i niekomercyjnego.
Niektóre biblioteki Boost nawet trafiły do c ++ 11 biblioteki standardowej, a niektóre inne, takie jak Boost.Optional i Boost.Variant będzie częścią C ++ 17.
Co może zrobić Boost?
Zwiększenie obejmuje większość zakątków programowania. Z wiki tagu doładowania tutaj na Przepełnienie stosu:
Zawiera biblioteki dla:
- Przetwarzanie napisów i tekstu
- Pojemniki
- Iteratory
- Algorytmy
- Obiekty funkcyjne i programowanie wyższego rzędu
- Programowanie ogólne
- Metaprogramowanie szablonów
- Metaprogramowanie preprocesora
- Programowanie równoległe
- Matematyka i numeracja
- Poprawność i testowanie
- Struktury danych
- Przetwarzanie obrazu
- Wejście wyjście
- Wsparcie międzyjęzykowe
- Pamięć
- Rozbiór gramatyczny zdania
- Interfejsy programowania
- Różne
- Zepsute obejścia kompilatora
Wersje
| Wersja | Nowe biblioteki | Informacje o wydaniu | Data wydania |
|---|---|---|---|
| 1.10.0 | notatki | 1999-12-14 | |
| 1.11.0 | Liczba wymierna | notatki | 2000-02-01 |
| 1.12.0 | notatki | 2000-02-23 | |
| 1.13.0 | Narzędzie, cechy typu, cechy połączenia, para skompresowana | notatki | 2000-02-29 |
| 1.14.0 | notatki | 2000-03-05 | |
| 1.15.0 | Liczba losowa | notatki | 2000-06-17 |
| 1.16.0 | Funkcjonalny, nagłówek iteratora | notatki | 2000-06-28 |
| 1.17.0 | Szyk | notatki | 2000-08-03 |
| 1.18.0 | Wykres, wyrażenie regularne | notatki | 2000-09-28 |
| 1.19.0 | Sprawdzanie koncepcji, Python, Static Assert, Koncepcje mapy nieruchomości | notatki | 2000-12-10 |
| 1.20.0 | Konwersja | notatki | 2001-01-06 |
| 1.21.0 | Adapter iteratora, basen, test | notatki | 2001-03-09 |
| 1.22.0 | CRC | notatki | 2001-05-25 |
| 1.23.0 | Dowolny, funkcja, Tokenizer, Funkcje specjalne, ośmiokąty, czwartorzędy | notatki | 2001-07-06 |
| 1.24.0 | Tuple | notatki | 19.08.2001 |
| 1.25.0 | Wątek, Bind | notatki | 01.10.2001 |
| 1.26.0 | Common Factor, Preprocessor | notatki | 2001-11-30 |
| 1.27.0 | notatki | 2002-02-05 | |
| 1.28.0 | Lambda, I / O State Saver | notatki | 2002-05-15 |
| 1.29.0 | Data-godzina, dynamiczny zestaw bitów, format | notatki | 2002-10-10 |
| 1.30.0 | System plików, opcjonalny, interwał, MPL, Spirit | notatki | 2003-03-19 |
| 1.31.0 | enable_if, wariant | notatki | 2004-01-26 |
| 1.32.0 | Przypisanie, Minmax, Multi-Index, Konwersja liczbowa, opcje programu, zakres, Serializacja, ciąg, tribool | notatki | 2004-11-19 |
| 1.33.0 | Iostream, Hash, Parametr, Pojemnik na wskaźnik, fala | notatki | 2005-08-11 |
| 1.34.0 | Foreach, Statechart, TR1, Typeof, Xpressive | notatki | 2007-05-12 |
| 1.35.0 | Asio, Bimap, Okrągły Bufor, Rodzaje funkcji, Fusion, GIL, Interprocess, Intrusive, Funkcje matematyczne / specjalne, Rozkłady matematyczne / statystyczne, MPI, system | notatki | 29.03.2008 |
| 1.36.0 | Akumulatory, wyjątki, jednostki, nieuporządkowane | notatki | 14.08.2008 |
| 1.37.0 | Proto | notatki | 2008-11-03 |
| 1.38.0 | Flyweight, ScopeExit, Swap | notatki | 2009-02-08 |
| 1.39.0 | Sygnały 2 | notatki | 02.05.2009 |
| 1.40.0 | notatki | 27.08.2009 | |
| 1.41.0 | Drzewo właściwości | notatki | 17.11.2009 |
| 1.42.0 | Uuid | notatki | 02.02.2010 |
| 1.43.0 | Funkcjonalny / Czynnik, Funkcjonalny / Naprzód | notatki | 2010-05-06 |
| 1.44.0 | Meta State Machine, Polygon | notatki | 2010-08-13 |
| 1.45.0 | notatki | 19.11.2010 | |
| 1.46.0 | Icl | notatki | 21.02.2011 |
| 1.46.1 | notatki | 2011-03-12 | |
| 1.47.0 | Chrono, Geometry, Phoenix, Ratio | notatki | 2011-07-11 |
| 1.48.0 | Kontener, ustawienia regionalne, ruch | notatki | 15.11.2011 |
| 1.49.0 | Sterta | notatki | 24.02.2012 |
| 1,50,0 | Algorytm, funkcja funkcjonalna / przeciążona, LocalFunction, Utility / IdentityType | notatki | 28.06.2012 |
| 1.51,0 | Kontekst | notatki | 2012-08-20 |
| 1.52.0 | notatki | 05.11.2012 | |
| 1.53.0 | Atomowa, Coroutine, Lockfree, Multiprecision, Odeint | notatki | 04.02.2013 |
| 1.54.0 | Zaloguj, TTI, Usuń typ | notatki | 01.07.2013 |
| 1.55,0 | Predef | notatki | 11.11.2013 |
| 1.56,0 | Wyrównaj, TypeIndex | notatki | 07.08.2014 |
| 1.57,0 | notatki | 03.11.2014 | |
| 1.58,0 | Endian, Sortuj | notatki | 17.04.2015 |
| 1.59.0 | Konwertuj, Coroutine2 | notatki | 13.08.2015 |
| 1.60.0 | VMD | notatki | 17.12.2015 |
| 1.61.0 | Compute, DLL, Hana, Metaparse | notatki | 2016-05-13 |
| 1.62.0 | Światłowód, QVM | notatki | 28.09.2016 |
| 1.63.0 | notatki | 26.12.2016 | |
| 1.64.0 | Proces | notatki | 19.04.2017 |
Instalacja lub konfiguracja
Zobacz Boost Pierwsze kroki .
Większość bibliotek Boost ma tylko nagłówek, co oznacza, że nie trzeba nic kompilować ani linkować.
Upewnij się, że otrzymujesz najnowszą wersję Boost:
- Odwiedź www.boost.org
- Poszukaj aktualnego wydania do pobrania. Obecnie ten link tutaj .
- Wybierz odpowiedni plik archiwum dla swojego systemu operacyjnego i pobierz.
Biblioteki zawierające tylko nagłówki mogą być następnie używane, po prostu dołączając odpowiednie pliki nagłówków.
Kilka bibliotek Boost wymaga kompilacji:
- Boost.Chrono
- Boost.Context
- Boost.Filesystem
- Boost.GraphParallel
- Boost.IOStreams
- Boost.Locale
- Boost.MPI
- Boost.ProgramOptions
- Boost.Python
- Boost.Regex
- Boost.Serialization
- Boost.Signals
- Boost.System
- Boost.Thread
- Boost.Timer
- Boost.Wave
Ponadto następujące biblioteki zawierają komponenty, które należy skompilować:
Boost.DateTime
Boost.Graph
Boost.Math
Boost.Random
Boost.Test
Boost.Exception
Źródło doładowania można uzyskać poprzez link do pobrania na stronie , który przekieruje na stronę SourceForge w celu uzyskania najnowszej wersji ( 1.61.0 od lipca 2016 r.). Można to rozpakować (lub wytarować itp.) Do katalogu (takiego jak C: \ local \ boost_1_61_0). Ten katalog można następnie dodać do ścieżki dołączania tworzonego oprogramowania. Następnie możesz dołączyć nagłówki Boost do plików C ++ za pomocą #include <boost/header/path.hpp> .
Większość bibliotek w trybie Boost ma tylko nagłówek. Jeśli potrzebujesz ich tylko, wystarczy powyższa dystrybucja źródłowa. Jednak jeśli potrzebujesz użyć jednej z bibliotek, która wymaga zbudowania skompilowanego pliku binarnego, będziesz tego potrzebować.
W każdym systemie najbardziej niezawodnym sposobem na uzyskanie poprawnych plików binarnych jest ich samodzielne zbudowanie. Te wskazówki są nieco inne dla Windows lub Linux / Unix / POSIX .
W systemie Windows z Visual Studio alternatywą do samodzielnego tworzenia bibliotek jest pobranie gotowych bibliotek ze strony Boost's SourceForge ( 1.61.0 od lipca 2016 r.). Na tej stronie możesz wybrać instalatora, który zainstaluje wersję dla określonej kompilacji Visual Studio lub plik 7-zip (boost_X_XX_X-bin-all-32-64.7z), który zawiera pliki binarne dla wszystkich obsługiwanych wersji Visual Studio. Każda z tych opcji obejmuje źródło / nagłówki oraz pliki binarne, więc nie ma potrzeby pobierania powyższej dystrybucji źródła. Gdy już to zrobisz, wypakuj / zainstaluj do katalogu (takiego jak C: \ local \ boost_1_61_0) i dodaj ten katalog do ścieżki dołączania, a następnie dodaj katalog zawierający pliki binarne odpowiadające twojej wersji programu Visual Studio (np. C: \ local \ boost_1_61_0 \ lib32-msvc-12.0 dla projektów 32-bitowych Visual Studio 2013) do ścieżki biblioteki.
Instalowanie i uruchamianie doładowania (Cygwin)
(Poziom początkujący; IDE: CLion)
Najpierw zainstaluj boost z mirrora Cygwin: otwórz exe instalacji, wyszukaj boost, zainstaluj pakiety.
Po zainstalowaniu boosta: będzie znajdować się w /usr/include/boost . Tutaj jest wszystko. Wszystkie instrukcje #include będą ścieżką z folderu boost, jak w: #include <boost/archive/text_oarchive.hpp> .
Po dołączeniu wybranych plików doładowania do plików .cpp , kod nadal nie będzie się kompilował w wybranym IDE, dopóki nie połączysz bibliotek i nie poinformujesz cmake, aby szukał pobranego kodu doładowania .
Aby cmake szukał kodu doładowania,
find_package(Boost 1.60.0 COMPONENTS components_you_want)
# for example:
find_package(Boost 1.60.0 COMPONENTS serialization)
Następnie include_directories(${Boost_INCLUDE_DIRS}) katalogi: include_directories(${Boost_INCLUDE_DIRS})
Na koniec dodaj plik wykonywalny i połącz biblioteki:
add_executable(your_target ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -any_missing_boostlibs)
Przed uruchomieniem programu uniknij zrzutu błędów, testując, czy przed dodaniem czegokolwiek lub uruchomieniem kodu znaleziono poprawkę:
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(YourTarget ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -missing_libs)
endif()
-missing_libs ponieważ błąd, który możesz -missing_libs polega na tym, że jakaś biblioteka doładowania lub inna mogła nie zostać połączona, i musisz ją ręcznie dodać - na przykład łącze, do którego się odwoływałem wcześniej.
Ostatecznie ostateczny plik CMakeLists.txt może wyglądać mniej więcej tak:
cmake_minimum_required(VERSION 3.7)
project(your_project)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp tmap.cpp tmap.h)
find_package(Boost 1.60.0 COMPONENTS serialization)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(your_project ${SOURCE_FILES})
target_link_libraries(your_project ${Boost_LIBRARIES})
endif()