Incluyendo Bibliotecas Boost relevantes con C ++ Source (usando Visual Studio)

Tengo un proyecto en el que estoy trabajando (para la escuela) en el que estoy investigando las bibliotecas de Boost para las soluciones. Necesito alguna forma de distribuir el código fuente requerido de Boost con mi aplicación para que pueda comstackrse sin que las bibliotecas estén instaladas en el sistema haciendo la comstackción. (Las computadoras de la escuela carecen de cualquier cosa que puedas mencionar. La escuela acaba de instalar CVS el año pasado. Pero tienen VS2005)

Nota: Estoy usando Visual Studio 2005 en Vista. Tengo Boost 1.34.1 en mi sistema. Utilicé el instalador automático . La documentación que 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 de llamar el comando incorrecto).

Edición: Estoy tratando de usar las bibliotecas RegEx.

Edición: 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

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

Entonces, esto es lo que hace: elimina la ruta de inclusión de boost de la configuración de su proyecto (herramienta-> opciones-> proyectos y soluciones-> directorios vc ++-> incluir archivos). Intenta comstackr. Mira qué incluir falla. Copie ese archivo de su directorio boost en el directorio de su proyecto. Enjabona, enjuaga, repite hasta que tu proyecto se compile.

Si está utilizando una biblioteca que requiere archivos .cpp, obtendrá un error en el momento del enlace. Copie todos los archivos .cpp de la biblioteca que usa en el directorio de su proyecto y agréguelos a su solución. Reconstruir y cruzar los dedos.

Para obtener una respuesta más detallada, publique qué bibliotecas está utilizando.

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, la segunda es el directorio de destino.

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

En base a su comentario de que está usando expresiones regulares, esto es lo que hace: descargue el archivo zip de distribución de impulso “normal”. Descomprimirlo en alguna parte. Vaya a libs / regex / src. Copie y pegue todos los archivos .cpp en ese directorio en el directorio de su proyecto. Agréguelos a su proyecto de Visual Studio (haga clic con el botón derecho, ‘agregar’ -> ‘elemento existente’). Luego vaya a boost / regex y copie todo lo que contiene (los archivos del encabezado) en el directorio de su proyecto (incluidos los subdirectorios). Cambie todos los archivos incluidos 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úrate de eliminar la ruta de inclusión de todo el sistema de la configuración de tu proyecto, como dije en mi última publicación.

Luego, comstack tu código. Obtendrá una serie de errores de “falta de archivo de inclusión” porque las expresiones regulares dependen de otras bibliotecas de impulso. Repita todo el proceso: vaya a boost / xxx donde xxx es la biblioteca que regex está buscando. Puede deducir la biblioteca del mensaje de error. Copia todo lo que el comstackdor solicita a tu propio directorio de proyectos. Es posible que deba jugar un poco con el diseño de su directorio antes de que funcione. Es realmente un enfoque paso a paso, donde cada paso es el mismo: identifique el archivo faltante, cópielo, vea si se incluye y se corrige esa inclusión y continúe con el siguiente paso. Este es un trabajo aburrido, me temo.

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

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

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

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

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

Es tal PITA comstackr impulso; Sólo los estudiantes motivados podrán hacerlo. ¿Has considerado empaquetar el instalador?