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.
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
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 |
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:
Las bibliotecas de solo encabezado pueden utilizarse simplemente incluyendo los archivos de encabezado respectivos.
Algunas bibliotecas de Boost requieren compilación:
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.
(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()