Looking for boost Answers? Try Ask4KnowledgeBase
Looking for boost Keywords? Try Ask4Keywords

boostEmpezando con boost


Observaciones

¿Qué es Boost?

Boost es una gran colección de bibliotecas de C ++ gratuitas y de alta calidad que cubren una amplia gama de temas. A menudo se considera una "segunda biblioteca estándar" para C ++, ya que muchos problemas comunes en C ++ se resuelven utilizando Boost.

Desde boost.org :

Boost proporciona bibliotecas gratuitas de código fuente de C ++ portátiles revisadas por pares.

Hacemos hincapié en las bibliotecas que funcionan bien con la biblioteca estándar de C ++. Las bibliotecas Boost están destinadas a ser ampliamente útiles y se pueden utilizar en un amplio espectro de aplicaciones. La licencia Boost fomenta el uso comercial y no comercial.

Algunas bibliotecas Boost incluso han llegado a la biblioteca estándar de C ++ 11, y algunas otras, como Boost.Optional y Boost.Variant , serán parte de C ++ 17.

¿Qué puede hacer Boost?

Boost cubre la mayoría de los rincones de la programación. Desde la wiki de la etiqueta boost aquí en Stack Overflow:

Incluye bibliotecas para:

  • Procesamiento de cadenas y textos.
  • Contenedores
  • Iteradores
  • Algoritmos
  • Objetos de función y programación de orden superior.
  • Programación genérica
  • Plantilla de metaprogramación
  • Preprocesamiento de metaprogramación
  • Programación concurrente
  • Matematicas y numericas
  • Corrección y pruebas.
  • Estructuras de datos
  • Procesamiento de imágenes
  • De entrada y salida
  • Soporte entre idiomas
  • Memoria
  • Análisis
  • Interfaces de programación
  • Diverso
  • Soluciones del compilador roto

Versiones

Versión Nuevas bibliotecas Notas de lanzamiento Fecha de lanzamiento
1.10.0 notas 1999-12-14
1.11.0 Número racional notas 2000-02-01
1.12.0 notas 2000-02-23
1.13.0 Utilidad, rasgos de tipo, rasgos de llamada, par comprimido notas 2000-02-29
1.14.0 notas 2000-03-05
1.15.0 Número aleatorio notas 2000-06-17
1.16.0 Funcional, cabecera iterador. notas 2000-06-28
1.17.0 Formación notas 2000-08-03
1.18.0 Gráfica, Expresión Regular notas 2000-09-28
1.19.0 Verificación de concepto, Python, afirmación estática,
Conceptos de mapa de propiedad
notas 2000-12-10
1.20.0 Conversión notas 2001-01-06
1.21.0 Adaptador de iterador, piscina, prueba notas 2001-03-09
1.22.0 CRC notas 2001-05-25
1.23.0 Cualquier, Función, Tokenizer,
Funciones Especiales, Octoniones, Cuaterniones.
notas 2001-07-06
1.24.0 Tupla notas 2001-08-19
1.25.0 Hilo, Bind notas 2001-10-01
1.26.0 Factor común, preprocesador notas 2001-11-30
1.27.0 notas 2002-02-05
1.28.0 Lambda, ahorrador de estado de E / S notas 2002-05-15
1.29.0 Fecha-Hora, Bitset Dinámico, Formato notas 2002-10-10
1.30.0 Sistema de archivos, Opcional, Intervalo, MPL, Spirit notas 2003-03-19
1.31.0 enable_if, Variante notas 2004-01-26
1.32.0 Asignación, minmax, multi-índice,
Conversión Numérica, Opciones de Programa, Rango,
Serialización, String, Tribool
notas 2004-11-19
1.33.0 Iostream, Hash, Parámetro,
Contenedor de puntero, ola
notas 2005-08-11
1.34.0 Foreach, Statechart, TR1, Typeof, Xpressive notas 2007-05-12
1.35.0 Asio, Bimap, Buffer Circular, Tipos de Función,
Fusión, GIL, Interproceso, Intrusivo,
Matemáticas / Funciones Especiales,
Matemáticas / distribuciones estadísticas, MPI, sistema
notas 2008-03-29
1.36.0 Acumuladores, Excepción, Unidades, Desordenados notas 2008-08-14
1.37.0 Proto notas 2008-11-03
1.38.0 Peso mosca, ScopeExit, Swap notas 2009-02-08
1.39.0 Señales2 notas 2009-05-02
1.40.0 notas 2009-08-27
1.41.0 Árbol de propiedad notas 2009-11-17
1.42.0 Uuid notas 2010-02-02
1.43.0 Funcional / Factor, Funcional / Adelante notas 2010-05-06
1.44.0 Máquina de estados meta, polígono notas 2010-08-13
1.45.0 notas 2010-11-19
1.46.0 Icl notas 2011-02-21
1.46.1 notas 2011-03-12
1.47.0 Crono, Geometría, Fénix, Ratio notas 2011-07-11
1.48.0 Contenedor, configuración regional, mover notas 15/11/2011
1.49.0 Montón notas 2012-02-24
1.50.0 Algoritmo, Funcional / OverloadedFunction,
LocalFunction, Utility / IdentityType
notas 2012-06-28
1.51.0 Contexto notas 2012-08-20
1.52.0 notas 2012-11-05
1.53.0 Atomic, Coroutine, Lockfree, Multiprecision,
Odeint
notas 2013-02-04
1.54.0 Registro, TTI, Borrado de Tipo notas 2013-07-01
1.55.0 Predef notas 2013-11-11
1.56.0 Alinear, TypeIndex notas 2014-08-07
1.57.0 notas 2014-11-03
1.58.0 Endian, ordenar notas 2015-04-17
1.59.0 Convertir, Coroutine2 notas 2015-08-13
1.60.0 VMD notas 2015-12-17
1.61.0 Calcular, DLL, Hana, Metaparse notas 2016-05-13
1.62.0 Fibra, QVM notas 2016-09-28
1.63.0 notas 2016-12-26
1.64.0 Proceso notas 2017-04-19

Instalación o configuración

Ver Boost Getting Started .

La mayoría de las bibliotecas de Boost son solo para encabezados, lo que significa que no hay nada que compilar o enlazar.

Asegúrate de obtener la versión más reciente de Boost:

  1. Visite www.boost.org
  2. Busque la descarga de la versión actual. Actualmente, este enlace aquí . Muestra dónde en el sitio web de boost puedes descargar Boost
  3. Seleccione el archivo de almacenamiento apropiado para su sistema operativo y descárguelo.

Las bibliotecas de solo encabezado pueden utilizarse simplemente incluyendo los archivos de encabezado respectivos.

Algunas bibliotecas de Boost requieren compilación:

  • 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.Sistema
  • Boost.Hilo
  • Boost.Timer
  • Boost.Wave

Además, las siguientes bibliotecas tienen componentes que deben ser compilados:

  • Boost.DateTimeTime

  • Boost.Graph

  • Boost.Math

  • Boost.Random

  • Prueba de alza

  • Boost.Exception

La fuente de Boost se puede obtener a través del enlace de descarga en el sitio , que volverá a dirigir a su página de SourceForge para obtener la última versión ( 1.61.0 a partir de julio de 2016). Esto se puede descomprimir (o desempaquetar, etc.) a un directorio (como C: \ local \ boost_1_61_0). Este directorio se puede agregar a la ruta de inclusión para el software que está creando. Después de esto, puede incluir encabezados Boost en archivos C ++ con #include <boost/header/path.hpp> .

La mayoría de las bibliotecas en Boost son solo de encabezado. Si solo necesita estos, la distribución de la fuente anterior es todo lo que se necesita. Sin embargo, si necesita usar una de las bibliotecas que requiere la creación de un binario compilado, también lo necesitará.

En cualquier sistema, la forma más confiable de obtener los binarios correctos es construirlos usted mismo. Estas direcciones son algo diferentes para Windows o Linux / Unix / POSIX .

En Windows con Visual Studio, una alternativa a la creación de las bibliotecas usted mismo es descargar bibliotecas previamente creadas desde la página de SourceForge de Boost ( 1.61.0 a partir de julio de 2016). En esa página, puede seleccionar un instalador que instalará una versión para una compilación específica de Visual Studio o el archivo 7-zip (boost_X_XX_X-bin-all-32-64.7z) que contiene los archivos binarios para todas las versiones de Visual Studio compatibles. Cualquiera de estas opciones incluye la fuente / encabezados, así como los binarios, por lo que no es necesario haber descargado la distribución de fuente anterior. Una vez que lo tenga, extraiga / instale en un directorio (como C: \ local \ boost_1_61_0) y agregue ese directorio a su ruta de inclusión, luego agregue el directorio que contiene los archivos binarios que corresponden a su versión de Visual Studio (por ejemplo, C: \ local \ boost_1_61_0 \ lib32-msvc-12.0 para proyectos de Visual Studio 2013 de 32 bits) a la ruta de la biblioteca.

Instalación y ejecución de Boost (Cygwin)

(Nivel principiante; IDE: CLion)

Primero, instale boost desde el espejo de Cygwin: abra el exe de instalación, busque boost, instale los paquetes.


Después de que se instale boost: se ubicará en /usr/include/boost . Aquí es donde está todo. Todas las declaraciones #include serán una ruta desde la carpeta boost, como en: #include <boost/archive/text_oarchive.hpp> .


Una vez que incluya los archivos boost de su elección en sus archivos .cpp , su código aún no se compilará en el IDE de su elección hasta que vincule las bibliotecas y le diga a cmake que busque el código boost descargado .


Con el fin de obtener cmake para buscar su código de impulso,

find_package(Boost 1.60.0 COMPONENTS components_you_want)

# for example: 
find_package(Boost 1.60.0 COMPONENTS serialization)
 

Luego, incluya los directorios: include_directories(${Boost_INCLUDE_DIRS})

Finalmente, agrega tu ejecutable y vincula las bibliotecas:

add_executable(your_target ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -any_missing_boostlibs)
 

Antes de iniciar su programa, evite un volcado de error haciendo pruebas para ver si se ha encontrado un impulso antes de incluir algo o ejecutar su código:

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 porque un error que puede encontrar es que alguna biblioteca boost u otra podría no estar vinculada, y debe agregarla manualmente, por ejemplo, el enlace al que hice referencia anteriormente.


Todos juntos, un archivo final CMakeLists.txt puede verse algo así como:

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()