migration bjam build-system jam boost-jam

migration - ¿Qué es Boost Jam y está valiendo la pena migrar a Jam?



bjam build-system (4)

Para mis propósitos, es justo lo que construye la biblioteca de impulso para ti, no sabía que podrías hacer algo más con ella, así que no entiendo lo que podrías querer al migrar hacia ella. Y lo siento, pero no estoy enterado de qué es el atasco regular. Dado que nadie más ha proporcionado una respuesta, solo proporcionaré mi comprensión.

Boost es una colección de clases y funciones para C ++ que son útiles para diversas tareas. Las clases y funciones de boost están agrupadas en bibliotecas. Algunas de las bibliotecas tienen todo su código en archivos de encabezado que puede usar simplemente mediante el uso de una instrucción de preprocesador #include, mientras que otras (como el sistema de archivos o la biblioteca de expresiones regulares) tienen parte de su implementación en archivos .cpp.

La compilación de estos archivos .cpp puede tomar años (es como 30 minutos dependiendo de lo que esté compilando) y sería un verdadero dolor si cada media hora cada vez que quisiera recompilar su programa fuera realmente doloroso. Entonces, lo que han hecho es solo para aquellas bibliotecas que están parcialmente almacenadas en archivos .cpp, pueden precompilarlas en un archivo .lib, y ese es el propósito de impulsar el atasco. Eso significa que solo debe dedicar media hora a compilarlos una vez y, a partir de ese momento, nunca tendrá que esperar media hora más.

Sin embargo, como se puede imaginar, cada biblioteca de impulso consta de muchos archivos cpp y muchos archivos de cabecera, y hay muchos sabores diferentes de cada uno (versiones de depuración, versiones de lanzamiento, multihebra, etc.) por lo que no es un proceso simple para simplemente compile la biblioteca de impulso usted mismo. Ahí es donde entra en juego el refuerzo. Le da el comando para compilar las bibliotecas y luego emite todos los comandos para usted al compilador, y para el final, tendrá una colección de archivos .lib precompilados, uno para cada sabor diferente de cada biblioteca. Los archivos de encabezado de alguna manera le dicen al vinculador qué archivos lib incluir, por lo que si tiene la configuración correcta de rutas, el sabor correcto del archivo .lib precompilado se vinculará automáticamente a su programa, lo que le ahorrará una compilación de 30 minutos.

Puede ver qué bibliotecas deben compilarse mediante boost jam y qué bibliotecas no lo hacen al mirar esta página: http://www.boost.org/doc/libs/1_37_0 - si una biblioteca no necesita un archivo lib ( y por lo tanto no requiere que te metas primero con boost jam), dirá "Build & Link: Header only", mientras que si una biblioteca requiere precompilar un archivo lib, dirá "Build & Link: Automatic linking".

Además, si está en Windows, puede descargar los archivos .lib precompilados para que nunca tenga que usar el aumento de atascos. Para obtener eso, lo que debe hacer es ir a la página www.boost.org, ir a la sección de Introducción y seguir todo el proceso para asegurarse de que todo esté configurado correctamente. Uno de los enlaces en la versión de Windows de esa página le dice dónde encontrar los archivos .lib precompilados.

¿Qué es Boost Jam y está valiendo la pena migrar a Jam?

Entiendo que el jam es un sistema de compilación construido por fuerza, pero no estoy seguro de cómo el atasco de refuerzo y el atasco regular es diferente.

También espero que haya alguien en la comunidad SO que haya trabajado con él y tal vez pueda resaltar algunas diferencias y / o beneficios.


Como dices, Boost Jam es un sistema de compilación, y se puede usar independientemente de cualquier otra biblioteca de impulso. No sé nada de Perforce Jam, pero, a mi entender, Boost jam es muy similar y, en general, compatible.

La principal diferencia es que Boost Jam a menudo viene con Boost Build , una colección de reglas de atasco diseñadas para tareas comunes, por ejemplo compilar bibliotecas, ejecutar pruebas unitarias, crear documentación doxygen, etc.

Comparado con otros sistemas de compilación, Boost Jam / Boost Build está diseñado para compilar fácilmente diferentes variantes. Por lo tanto, si desea cambiar la configuración de compilación de depuración a versión o de subproceso único a múltiple, determina muchos de los cambios automáticamente.

El inconveniente es que la sintaxis es muy delicada, y fuera del sitio web de impulso, no hay una buena documentación. Pero me imagino que Perforce Jam es igual de malo en ese sentido.


Dada la elección de las herramientas de compilación, no migraría al atasco. Existen mejores sistemas de compilación: CMake / SCons para C / C ++, qmake para Qt, Ant para Java, NAnt y MSBuild para .NET, y más. Puede que no sean técnicamente superiores, pero serán menos dolorosos de usar simplemente porque mucha más gente está familiarizada con ellos (por otro lado, podrían ser técnicamente superiores, por supuesto: D).


Uso Boost Jam para mi desarrollo de C ++ multiplataforma. Lo elegí porque

  • Quiero que mi código se genere en todas partes Boost construye,
  • usa un lenguaje declarativo relativamente simple para especificar cómo construir objetivos, y
  • puede construir todos los diferentes sabores de sus binarios (por ejemplo, depuración frente a release, 32 bits frente a 64 bits, msvc vs. gcc) en una sola invocación con un mínimo absoluto de excepciones relacionadas con el sabor en las declaraciones de compilación.

Puede refinar las reglas genéricas con configuraciones específicas del sabor, en lugar de escribir reglas separadas para cada permutación de sabor. La sintaxis no es exactamente lo que habría elegido, pero no es demasiado difícil acostumbrarse.

Este documento compara Boost Jam con CMake, SCons y Eclipse CDT: http://syrcose.ispras.ru/2009/files/04_paper.pdf

Tengo entendido que Boost Jam es una rama de Perforce Jam mantenida por la comunidad de Boost, y que Perforce Jam ya no se mantiene activamente (las notas de la versión tienen la última actualización en abril de 2003).

Por supuesto, si no te importa el desarrollo multiplataforma, hay formas más fáciles de hacerlo, como otros han mencionado aquí. Personalmente, sigo teniendo la intención de volver a visitar Eclipse CDT; no parecía utilizable hace 5 años, pero he escuchado que ha recorrido un largo camino.