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:

  1. Besök www.boost.org
  2. Leta efter nedladdningen av aktuell version. För närvarande länkar det här . Visar var på boost-webbplatsen du kan ladda ner Boost
  3. 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()


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow