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:

  1. Odwiedź www.boost.org
  2. Poszukaj aktualnego wydania do pobrania. Obecnie ten link tutaj . Pokazuje, gdzie na stronie boost można pobrać Boost
  3. 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()


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow