boost Handledning
Komma igång med boost
Sök…
Anmärkningar
Vad är Boost?
Boost är en stor samling gratis C ++ -bibliotek av hög kvalitet som täcker ett brett utbud av ämnen. Det anses ofta vara ett "andra standardbibliotek" för C ++, eftersom många vanliga problem i C ++ löses med hjälp av Boost.
Från boost.org :
Boost tillhandahåller gratis peer-granskade bärbara C ++ källbibliotek.
Vi betonar bibliotek som fungerar bra med C ++ Standardbiblioteket. Boost-bibliotek är avsedda att vara allmänt användbara och användbara över ett brett spektrum av applikationer. Boost-licensen uppmuntrar både kommersiell och icke-kommersiell användning.
Vissa Boost-bibliotek har till och med tagit sig in i C ++ 11-standardbiblioteket, och andra andra, som Boost.Optional och Boost.Variant , kommer att ingå i C ++ 17.
Vad kan Boost göra?
Boost täcker de flesta hörn av programmering. Från boost-taggen wiki här på Stack Overflow:
Det innehåller bibliotek för:
- Sträng och textbehandling
- behållare
- iteratorer
- algoritmer
- Funktionsobjekt och högre ordningsprogrammering
- Generisk programmering
- Mallmetaprogrammering
- Förprocessor Metaprogrammering
- Samtidig programmering
- Matematik och numerik
- Korrekthet och testning
- Data struktur
- Bildbehandling
- Ingång / utgång
- Stöd mellan språk
- Minne
- parsing
- Programmeringsgränssnitt
- Diverse
- Trasiga lösningar på kompilatorn
versioner
| Version | Nya bibliotek | Släppanteckningar | Utgivningsdatum |
|---|---|---|---|
| 1.10.0 | anteckningar | 1999/12/14 | |
| 1.11.0 | Rationellt tal | anteckningar | 2000-02-01 |
| 1.12.0 | anteckningar | 2000/02/23 | |
| 1.13.0 | Verktyg, typdrag, samtalstrekk, komprimerat par | anteckningar | 2000-02-29 |
| 1.14.0 | anteckningar | 2000/03/05 | |
| 1.15.0 | Slumpmässigt nummer | anteckningar | 2000/06/17 |
| 1.16.0 | Funktionell, iteratorhuvud | anteckningar | 2000-06-28 |
| 1.17.0 | Array | anteckningar | 2000-08-03 |
| 1.18.0 | Diagram, regelbundet uttryck | anteckningar | 2000-09-28 |
| 1.19.0 | Concept Check, Python, Static Assert, Fastighetskarta koncept | anteckningar | 2000/12/10 |
| 1.20.0 | Omvandling | anteckningar | 2001/01/06 |
| 1.21.0 | Iteratoradapter, pool, test | anteckningar | 2001-03-09 |
| 1.22.0 | CRC | anteckningar | 2001/05/25 |
| 1.23.0 | Vilket som helst, Funktion, Tokenizer, Specialfunktioner, Octonions, Quaternions | anteckningar | 2001/07/06 |
| 1.24.0 | tupel | anteckningar | 2001/08/19 |
| 1.25.0 | Tråd, bind | anteckningar | 2001-10-01 |
| 1.26.0 | Gemensam faktor, förprocessor | anteckningar | 2001-11-30 |
| 1.27.0 | anteckningar | 2002-02-05 | |
| 1.28.0 | Lambda, I / O State Saver | anteckningar | 2002-05-15 |
| 1.29.0 | Date-Time, Dynamic Bitset, Format | anteckningar | 2002-10-10 |
| 1.30.0 | Filsystem, Valfritt, Intervall, MPL, Spirit | anteckningar | 2003-03-19 |
| 1.31.0 | enable_if, Variant | anteckningar | 2004-01-26 |
| 1.32.0 | Uppdrag, Minmax, Multi-Index, Numerisk konvertering, programalternativ, räckvidd, Serialisering, sträng, tribool | anteckningar | 2004-11-19 |
| 1.33.0 | Iostream, Hash, Parameter, Pekarbehållare, Wave | anteckningar | 2005-08-11 |
| 1.34.0 | Foreach, Statechart, TR1, Typeof, Xpressive | anteckningar | 2007-05-12 |
| 1.35.0 | Asio, Bimap, cirkulär buffert, funktionstyper, Fusion, GIL, interprocess, påträngande, Matematik / specialfunktioner, Matematik / statistiska fördelningar, MPI, System | anteckningar | 2008-03-29 |
| 1.36.0 | Ackumulatorer, undantag, enheter, oordnade | anteckningar | 2008-08-14 |
| 1.37.0 | Proto | anteckningar | 2008-11-03 |
| 1.38.0 | Flyweight, ScopeExit, Swap | anteckningar | 2009-02-08 |
| 1.39.0 | Signals2 | anteckningar | 2009-05-02 |
| 1.40.0 | anteckningar | 2009-08-27 | |
| 1.41.0 | Fastighetsträd | anteckningar | 2009-11-17 |
| 1.42.0 | UUID | anteckningar | 2010-02-02 |
| 1.43.0 | Funktionell / faktor, funktionell / framåt | anteckningar | 2010-05-06 |
| 1.44.0 | Meta State Machine, Polygon | anteckningar | 2010-08-13 |
| 1.45.0 | anteckningar | 2010-11-19 | |
| 1.46.0 | icl | anteckningar | 2011-02-21 |
| 1.46.1 | anteckningar | 2011-03-12 | |
| 1.47.0 | Chrono, Geometry, Phoenix, Ratio | anteckningar | 2011-07-11 |
| 1.48.0 | Behållare, språk, flytta | anteckningar | 2011-11-15 |
| 1.49.0 | Högen | anteckningar | 2012-02-24 |
| 1.50.0 | Algoritm, funktionell / överbelastad funktion, LocalFunction, Utility / IdentityType | anteckningar | 2012-06-28 |
| 1.51.0 | Sammanhang | anteckningar | 2012-08-20 |
| 1.52.0 | anteckningar | 2012/11/05 | |
| 1.53.0 | Atomic, Coroutine, Lockfree, Multiprecision, Odeint | anteckningar | 2013/02/04 |
| 1.54.0 | Logg, TTI, typ radering | anteckningar | 2013/07/01 |
| 1.55.0 | PREDEF | anteckningar | 2013/11/11 |
| 1.56.0 | Justera, TypeIndex | anteckningar | 2014/08/07 |
| 1.57.0 | anteckningar | 2014/11/03 | |
| 1.58.0 | Endian, Sort | anteckningar | 2015/04/17 |
| 1.59.0 | Konvertera, Coroutine2 | anteckningar | 2015/08/13 |
| 1.60.0 | VMD | anteckningar | 2015/12/17 |
| 1.61.0 | Beräkna, DLL, Hana, Metaparse | anteckningar | 2016/05/13 |
| 1.62.0 | Fiber, QVM | anteckningar | 2016/09/28 |
| 1.63.0 | anteckningar | 2016/12/26 | |
| 1.64.0 | Bearbeta | anteckningar | 2017/04/19 |
Installation eller installation
Se Öka Komma igång .
De flesta av Boost-biblioteken är endast sidhuvud, vilket innebär att det inte finns något du behöver sammanställa eller länka till.
Se till att du får den senaste versionen av Boost:
- Besök www.boost.org
- Leta efter nedladdningen av aktuell version. För närvarande länkar det här .
- Välj lämplig arkivfil för ditt operativsystem och ladda ner.
Därefter kan bara bibliotekshuvud användas genom att helt enkelt inkludera respektive rubrikfiler.
Några Boost-bibliotek kräver sammanställning:
- 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
Följande bibliotek har också komponenter som måste sammanställas:
Boost.DateTime
Boost.Graph
Boost.Math
Boost.Random
Boost.Test
Boost.Exception
Källan för Boost kan erhållas via nedladdningslänken på webbplatsen , som kommer att dirigera till sin SourceForge-sida för den senaste versionen ( 1.61.0 från och med juli 2016). Det här kan packas upp (eller tas upp osv) till en katalog (som C: \ local \ boost_1_61_0). Den här katalogen kan sedan läggas till inkluderingsvägen för den programvara du bygger. Efter detta kan du inkludera Boost-rubriker i C ++ -filer med #include <boost/header/path.hpp> .
Majoriteten av biblioteken i Boost är endast sidhuvud. Om du bara behöver dessa är ovanstående källdistribution allt som behövs. Men om du behöver använda ett av biblioteken som kräver en sammanställd binär att byggas, behöver du det också.
På alla system är det mest pålitliga sättet att få rätt binärer att bygga dem själv. Dessa anvisningar är något annorlunda för Windows eller Linux / Unix / POSIX .
I Windows med Visual Studio är ett alternativ till att bygga biblioteken själv att ladda ner förbyggda bibliotek från Boosts SourceForge-sida ( 1.61.0 från och med juli 2016). På den sidan kan du välja ett installationsprogram som kommer att installera en version för en specifik Visual Studio-byggnad eller 7-zip-filen (boost_X_XX_X-bin-all-32-64.7z) som innehåller binärerna för alla versioner som stöds av Visual Studio. Ett av dessa alternativ inkluderar källan / rubrikerna samt binärerna, så det finns inget behov att ha laddat ner källdistributionen ovan. När du har det, extrahera / installera till en katalog (som C: \ local \ boost_1_61_0) och lägg till den katalogen till din inkluderande sökväg, lägg sedan till katalogen som innehåller binärerna som motsvarar din version av Visual Studio (t.ex. C: \ local \ boost_1_61_0 \ lib32-msvc-12.0 för Visual Studio 2013 32-bitarsprojekt) till bibliotekets sökväg.
Installera och köra Boost (Cygwin)
(Nybörjarnivå; IDE: CLion)
Installera först boost från Cygwin-spegeln: öppna installationsexe, sök efter boost, installera paketen.
Efter att boost har installerats: det kommer att finnas i /usr/include/boost . Det är där allt är. Alla #include uttalanden kommer att vara en sökväg från boostmappen, som i: #include <boost/archive/text_oarchive.hpp> .
När du har inkluderat de .cpp i dina .cpp filer kommer din kod fortfarande inte att sammanställas i ditt valde IDE förrän du länkar biblioteken och ber cmake att söka efter den nedladdade boostkoden .
För att få cmake för att söka efter din boostkod,
find_package(Boost 1.60.0 COMPONENTS components_you_want)
# for example:
find_package(Boost 1.60.0 COMPONENTS serialization)
Därefter inkluderar katalogerna: include_directories(${Boost_INCLUDE_DIRS})
Lägg till slutet ditt körbara och länka biblioteken:
add_executable(your_target ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -any_missing_boostlibs)
Innan du startar programmet bör du undvika en feldump genom att testa för att se om boost har hittats innan du inkluderar något eller kör din kod:
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(YourTarget ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -missing_libs)
endif()
Jag inkluderade -missing_libs eftersom ett fel du kan stöta på är att något boost-bibliotek eller annat inte kanske har länkats, och du måste lägga till det manuellt - till exempel länken jag refererade till tidigare.
Sammantaget kan en slutlig CMakeLists.txt-fil se ut som:
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()