c++ visual-studio boost

boost c++



Incluyendo Bibliotecas Boost Relevantes con Fuente C++(Usando Visual Studio) (6)

Depende de la biblioteca que estés usando. Si está utilizando una biblioteca de solo encabezado (la mayoría de las bibliotecas de impulso son, algunas excepciones notables son señales, serialización y fecha / hora) puede simplemente copiar esos archivos de encabezado. De lo contrario, también deberá copiar los archivos cpp. Mi sugerencia es simplemente incluirlos en su proyecto.

Por lo tanto, esto es lo que debe hacer: elimina la vía de acceso de boost de la configuración de su proyecto (herramientas-> opciones-> proyectos y soluciones-> directorios vc ++-> archivos incluidos). Intenta compilar. Mire qué incluye falla. Copie ese archivo de su directorio de impulso a su directorio de proyecto. Enjabona, enjuaga, repite hasta que tu proyecto se compile.

Si está utilizando una biblioteca que requiere archivos .cpp, recibirá un error al momento del enlace. Copie todos los archivos .cpp de la biblioteca que usa en su directorio de proyectos y agréguelos a su solución. Reconstruye y cruza los dedos.

Para obtener una respuesta más detallada, publique las bibliotecas que está utilizando.

Tengo un proyecto en el que estoy trabajando (para la escuela) que estoy buscando en las bibliotecas de Boost para las soluciones. Necesito una forma de distribuir el código fuente requerido de Boost con mi aplicación para que pueda compilarse sin que las bibliotecas estén instaladas en el sistema que realiza la compilación. (Las computadoras de la escuela carecen de todo lo que puede mencionar. La escuela acaba de instalar CVS el año pasado. Pero sí tienen VS2005)

Nota: estoy usando Visual Studio 2005 en Vista. Tengo Boost 1.34.1 en mi sistema. Usé el instalador automático . La documentación con la que me he encontrado dice algo sobre el uso del comando BCP, pero ese comando no parece copiar nada. (Estoy usando la ruta absoluta para llamar a BCP, así que no termino llamando al comando incorrecto).

Editar: Estoy tratando de usar las bibliotecas RegEx.

Editar: El comando que estoy usando para BCP es: "c:/Program Files/boost/boost_1_34_1/bin/bcp.exe" boost/regex.hpp regex/

Y vuelve: no errors detected


Esto me parece un poco extraño. Si está distribuyendo el código fuente, las personas a las que distribuye deberían poder instalar boost. Entonces, si ya tienen impulso, no hay duplicación y confusión, o si no lo hacen y necesita una biblioteca integrada, construirán la biblioteca correcta para su sistema. Si las personas que estás distribuyendo no están dispuestas a instalar boost, entonces te sugiero que distribuyas binarios en un paquete de instalación para que sea lo más fácil posible para ellos.


Me he encontrado con esto antes, incrustando impulso en mis proyectos. Cada biblioteca de impulso individual viene con varios archivos de proyecto para compilar con diferentes sistemas make (Jam, make, Visual Studio 6 ...) pero nunca son tan geniales con las versiones más nuevas de VS.

Siempre prefiero crear un nuevo archivo de proyecto e insertar el impulso directamente en mi proyecto. Es bastante simple, solo necesita agregar todos los archivos fuente y establecer las opciones del proyecto correctamente. Sin embargo, hay una advertencia, y es que debe nombrar el archivo de salida de la biblioteca como lo hace el refuerzo, porque sus archivos de inclusión dependen de eso.

Una vez que haya hecho esto, puede distribuir las bibliotecas de impulso al igual que cualquier otro archivo en su proyecto.


En función de su comentario de que está utilizando regex, esto es lo que hace: descargue el archivo zip de distribución de impulso ''normal''. Descomprímelo en alguna parte. Ir a libs / regex / src. Copie y pegue todos los archivos .cpp en ese directorio en su directorio de proyecto. Añádalos a su proyecto de Visual Studio (haga clic con el botón derecho, ''agregar'' -> ''elemento existente''). Luego vaya a boost / regex y copie todo allí (los archivos de encabezado) a su directorio de proyecto (incluidos los subdirectorios). Cambie todas las inclusiones en sus propios archivos .cpp y .h de #include a "regex.hpp" para que incluya los encabezados de su directorio local y no los que se instalaron en todo el sistema. Asegúrese de eliminar la ruta de inclusión de todo el sistema desde la configuración de su proyecto, como dije en mi última publicación.

Luego, compila tu código. Obtendrá una serie de errores de ''archivo de inclusión faltante'' porque regex depende de otras bibliotecas de refuerzo. Repita todo el proceso: vaya a boost / xxx, donde xxx es la biblioteca que está buscando Regex. Puede deducir la biblioteca del mensaje de error. Copie todo lo que el compilador solicita a su propio directorio de proyectos. Es posible que tenga que juguetear un poco con el diseño de su directorio antes de que funcione. En realidad, se trata de un enfoque paso a paso, donde cada paso es el mismo: identificar el archivo que falta, copiarlo, ver si se encuentra y corregir ese elemento, y continuar con el siguiente paso. Este es un trabajo aburrido, me temo.

Puedes automatizar todo esto con bcp, pero para un proyecto único como un proyecto escolar no me molestaría; solo si cree que tendrá proyectos futuros que requerirán que entregue un archivo zip autónomo.


Intenta llamar a bcp con este comando:

"c:/Program Files/boost/boost_1_34_1/bin/bcp.exe" --boost="c:/Program Files/boost/boost_1_34_1" regex regex

--boost le dice a bcp donde está instalado boost, la primera regex es el nombre de los módulos, el segundo es el directorio de destino.

Ah, y si aún no lo ha notado, hay archivos make de Visual C ++ en libs/regex/build/ .


Es tal PITA para compilar impulso; solo los estudiantes motivados podrán hacerlo. ¿Has considerado agrupar el instalador?