¿Cuál es una buena explicación paso a paso sobre cómo usar la biblioteca Boost en un proyecto vacío en Visual Studio?
c++
visual-studio-2010
boost
OlimilOops
fuente
fuente
Respuestas:
Si bien la respuesta de Nate ya es bastante buena, voy a ampliarla más específicamente para Visual Studio 2010 según lo solicitado, e incluiré información sobre la compilación en los diversos componentes opcionales que requieren bibliotecas externas.
Si está utilizando bibliotecas de encabezados solamente, entonces todo lo que necesita hacer es desarchivar la descarga de impulso y configurar las variables de entorno. Las instrucciones a continuación establecen las variables de entorno solo para Visual Studio, y no en todo el sistema en su conjunto. Tenga en cuenta que solo tiene que hacerlo una vez.
C:\boost_1_47_0
).Microsoft.Cpp.<Platform>.user
, y seleccioneProperties
para abrir la Página de propiedades para editar.VC++ Directories
a la izquierda.Include Directories
sección para incluir la ruta a sus archivos fuente de impulso.Si desea utilizar la parte de impulso que requiere construcción, pero ninguna de las características que requieren dependencias externas, entonces construirla es bastante simple.
C:\boost_1_47_0
).bootstrap.bat
para compilar b2.exe (anteriormente denominado bjam).Ejecute b2:
b2 --toolset=msvc-10.0 --build-type=complete stage
;b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
Sal a caminar / mira una película o 2 / ....
Library Directories
sección para incluir la ruta a la salida de sus bibliotecas de impulso. (El valor predeterminado para el ejemplo y las instrucciones anteriores seríaC:\boost_1_47_0\stage\lib
. Cambie el nombre y mueva el directorio primero si desea tener x86 y x64 uno al lado del otro (como a<BOOST_PATH>\lib\x86
&<BOOST_PATH>\lib\x64
).Si desea los componentes opcionales, entonces tiene más trabajo por hacer. Estos son:
Filtros Boost.IOStreams Bzip2:
C:\bzip2-1.0.6
).-sBZIP2_SOURCE="C:\bzip2-1.0.6"
cuando ejecute b2 en el paso 5.Boost.IOStreams filtros Zlib
C:\zlib-1.2.5
).-sZLIB_SOURCE="C:\zlib-1.2.5"
cuando ejecute b2 en el paso 5.Boost.MPI
project-config.jam
en el directorio<BOOST_PATH>
que resultó de ejecutar bootstrap. Agregue una línea que leausing mpi ;
(observe el espacio antes de ';').Boost.Python
Para construir completamente la versión de 32 bits de la biblioteca se requiere Python de 32 bits, y de manera similar para la versión de 64 bits. Si tiene varias versiones instaladas por ese motivo, deberá decirle a b2 dónde encontrar una versión específica y cuándo usar cuál. Una forma de hacerlo sería editar el archivo
project-config.jam
en el directorio<BOOST_PATH>
que resultó de ejecutar bootstrap. Agregue las siguientes dos líneas ajustando según corresponda para sus rutas y versiones de instalación de Python (tenga en cuenta el espacio antes de ';').using python : 2.6 : C:\\Python\\Python26\\python ;
using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;
Tenga en cuenta que tal especificación explícita de Python actualmente hace que la compilación MPI falle. Por lo tanto, tendrá que hacer una construcción separada con y sin especificación para construir todo si también está creando MPI.
Siga el segundo conjunto de instrucciones anteriores para generar impulso.
Boost.Regex soporte de UCI
C:\icu4c-4_8
).<ICU_PATH>\source\allinone
.-sICU_PATH="C:\icu4c-4_8"
cuando ejecute b2 en el paso 5.fuente
Si bien las instrucciones en el sitio web de Boost son útiles, aquí hay una versión condensada que también construye bibliotecas x64.
Construye las bibliotecas de 32 bits
Esto instala los archivos de encabezado Boost debajo
C:\Boost\include\boost-(version)
y las bibliotecas de 32 bits debajoC:\Boost\lib\i386
. Tenga en cuenta que la ubicación predeterminada para las bibliotecas esC:\Boost\lib
pero querrá colocarlas en uni386
directorio si planea construir para múltiples arquitecturas.bootstrap
Correr:
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install
toolset=msvc-11.0
toolset=msvc-10.0
toolset=msvc-14.1
Agregue
C:\Boost\include\boost-(version)
a su ruta de inclusión.C:\Boost\lib\i386
a su ruta de libs.Construye las bibliotecas de 64 bits
Esto instala los archivos de encabezado Boost debajo
C:\Boost\include\boost-(version)
y las bibliotecas de 64 bits debajoC:\Boost\lib\x64
. Tenga en cuenta que la ubicación predeterminada para las bibliotecas esC:\Boost\lib
pero querrá ubicarlas bajo unx64
directorio si planea construir para múltiples arquitecturas.bootstrap
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
toolset=msvc-11.0
toolset=msvc-10.0
C:\Boost\include\boost-(version)
a su ruta de inclusión.C:\Boost\lib\x64
a su ruta de libs.fuente
También puede probar -j% NUMBER_OF_PROCESSORS% como argumento, usará todos sus núcleos. Hace las cosas súper rápidas en mi quad core.
fuente
Podría recomendar el siguiente truco: crear un
boost.props
archivo especialEste procedimiento tiene el valor de que el impulso se incluye solo en proyectos donde desea incluirlo explícitamente. Cuando tenga un nuevo proyecto que use boost, haga lo siguiente:
EDITAR (siguiente edición de @ jim-fred):
El
boost.props
archivo resultante se parece a esto ...Contiene una macro de usuario para la ubicación del directorio de impulso (en este caso, D: \ boost_1_53_0) y otros dos parámetros: IncludePath y LibraryPath. Una instrucción
#include <boost/thread.hpp>
encontraría thread.hpp en el directorio apropiado (en este caso, D: \ boost_1_53_0 \ boost \ thread.hpp). El directorio 'stage \ lib \' puede cambiar según el directorio instalado.Este archivo boost.props podría ubicarse en el
D:\boost_1_53_0\
directorio.fuente
¿Qué partes de Boost necesitas? Muchas cosas son parte de TR1 que se envía con Visual Studio, por lo que simplemente podría decir, por ejemplo:
Según James, esto también debería funcionar (en C ++ 0x):
fuente
std
espacio de nombres, ya que están en el estándar C ++ 0x. (Creo que probablemente también estén en elstd::tr1
espacio de nombres, por compatibilidad con versiones anteriores).Este hilo ha existido por un tiempo, y pensé que agregaría algo sobre CÓMO construir Boost lo más rápido posible en su hardware específico.
Si tiene 4 o 6 núcleos, use -j5 o -j7 respectivamente. Ciertamente, no es la compilación estándar ni -j2 a menos que tenga un núcleo dual.
Estoy ejecutando un Sandy Bridge Extreme con stock de 3930K (6 núcleos) en mi estación principal, pero tengo 2600k (4 núcleos) en una caja de respaldo más antigua, y la tendencia es que obtengo los mejores tiempos de compilación de Boost con N + 1 procesos de construcción donde N es el número de núcleos físicos. N + 2 alcanza un punto de rendimientos decrecientes y los tiempos suben.
Notas: Hyperthreading está habilitado, 32 GB de RAM DDR3, SSD Samsung 840 EVO.
-j7 en 6 núcleos (2 minutos y 51 segundos) (Win7 Ultimate x64) (Visual Studio 2013)
-j6 en 6 núcleos (3 minutos y 2 segundos) (Win7 Ultimate x64) (Visual Studio 2013)
-j8 en 6 núcleos (3 minutos y 17 segundos) (Win7 Ultimate x64) (Visual Studio 2013)
Config
Observo que la compilación de 64 bits tarda un poco más, necesito hacer la misma comparación para esos y actualizar.
fuente
También una pequeña nota: si desea reducir el tiempo de compilación, puede agregar el indicador
para ejecutar dos compilaciones paralelas al mismo tiempo. Esto podría reducirlo a ver una película;)
fuente
-j2
aumentaría el valor de su respuesta.Descargue impulso desde: http://www.boost.org/users/download/ por ejemplo, por svn
Después de eso: cmd -> vaya al directorio boost ("D: \ boostTrunk" - donde realiza el pago o descarga y extrae el paquete): comando: bootstrap
creamos bjam.exe en ("D: \ boostTrunk") Después de eso: comando: bjam toolset = msvc-10.0 variant = debug, release threading = multi link = static (Tomará un tiempo ~ 20min.)
Después de eso: Abra Visual Studio 2010 -> cree un proyecto vacío -> vaya a las propiedades del proyecto -> set:
Pegue este código y verifique si está funcionando.
Recursos: https://www.youtube.com/watch?v=5AmwIwedTCM
fuente
Así es como pude usar Boost:
¡Podrás construir tu proyecto sin ningún error!
fuente
Los instaladores de Windows ubicados aquí funcionaron perfectamente para mí. Tomé los siguientes pasos:
¡Buena suerte!
fuente
Una pequeña adición a la respuesta principal muy informativa de KTC:
Si está utilizando el Visual Studio c ++ 2010 Express gratuito, y logró que compilara binarios de 64 bits, y ahora quiere usarlo para usar una versión de 64 bits de las bibliotecas Boost, puede terminar con 32- bibliotecas de bits (su kilometraje puede variar, por supuesto, pero en mi máquina este es el caso triste).
Podría solucionar esto usando lo siguiente: entre los pasos descritos anteriormente como
Inserté una llamada a 'setenv' para configurar el entorno. Para una compilación de lanzamiento, los pasos anteriores se convierten en:
Encontré esta información aquí: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
fuente
Un ejemplo minimalista para comenzar en Visual Studio:
1. Descargue y descomprima Boost desde aquí.
2.Cree un proyecto vacío de Visual Studio, utilizando un ejemplo de biblioteca de impulso que no requiere compilación separada:
3.En las propiedades del proyecto de Visual Studio, configure los directorios de inclusión adicionales:
Para un ejemplo muy simple:
Cómo instalar las bibliotecas Boost en Visual Studio
Si no desea utilizar toda la biblioteca de impulso, solo un subconjunto:
Usando un subconjunto de las bibliotecas de impulso en Windows
Si específicamente desea saber ahora sobre las bibliotecas que requieren compilación:
Cómo usar las bibliotecas compiladas de Boost en Windows
fuente
Además, hay algo que encuentro muy útil. Utilice variables de entorno para sus rutas de impulso. (Cómo establecer variables de entorno en Windows, enlace en la parte inferior para 7,8,10) La variable BOOST_ROOT parece ser un lugar común y está configurada en la ruta raíz donde descomprime el impulso.
Luego, en Propiedades, c ++, general, Uso adicional de directorios de inclusión
$(BOOST_ROOT)
. Luego, si / cuando pasa a una versión más nueva de la biblioteca de impulso, puede actualizar su variable de entorno para que apunte a esta versión más nueva. Como más de sus proyectos, use boost, no tendrá que actualizar los 'Directorios de inclusión adicionales' para todos ellos.También puede crear una variable BOOST_LIB y señalarla donde se organizan las bibliotecas. Del mismo modo, para el enlazador-> directorios de bibliotecas adicionales, no tendrá que actualizar proyectos. Tengo algunas cosas viejas compiladas con vs10 y cosas nuevas con vs14, así que construí ambos sabores de boost lib en la misma carpeta. Entonces, si muevo un proyecto de vs10 a vs14, no tengo que cambiar las rutas de impulso.
NOTA: Si cambia una variable de entorno, no funcionará repentinamente en un proyecto VS abierto. VS carga variables al inicio. Por lo tanto, tendrá que cerrar VS y volver a abrirlo.
fuente