c++ windows boost bjam

c++ - Construyendo un subconjunto de impulso en Windows



boost bjam (2)

Estoy intentando configurar un subconjunto de boost y compilarlo correctamente usando bjam, sin embargo, no estoy obteniendo el resultado que estoy buscando. Estoy trabajando en Windows usando boost 1.37.0.

Digamos que quiero que las bibliotecas smart_ptr y filesystem estén construidas / instaladas. Intencionalmente elegí una biblioteca de solo encabezado y una biblioteca que necesitaban compilar una biblioteca. Quiero que estén integrados en una estructura de directorios similar a la que obtendría si construyera una instalación completa de boost con bjam (es decir, sin especificar ninguna --with-libraryX) pero, por supuesto, sin todas las bibliotecas en las que no estoy interesado. .

Mi primer enfoque fue utilizar --with-filesystem --with-smart_ptr en bjam, sin embargo, parecía que no reconocía smart_ptr (probé smartptr y smart-ptr sin éxito). Supongo que esto se debe a que es solo una biblioteca de encabezado.

Cuando lo quité y solo tenía --with-filesystem, parecía copiar TODOS los archivos de encabezado de las bibliotecas en la ruta de instalación y solo crear las bibliotecas para el sistema de archivos. El comportamiento de compilación de la biblioteca fue el que esperaba, pero obtuve toneladas de archivos de encabezado para bibliotecas que no estoy interesado en instalar en mi directorio de impulso.

Mi segundo enfoque fue utilizar bcp para copiar los proyectos relevantes. Esto funcionó en el sentido de que solo obtuve los proyectos que me interesaban (y sus dependencias). Sin embargo, no proporcionaron ningún archivo de creación para compilar las bibliotecas que se copiaron. Esto significa que necesitaría configurar archivos de proyectos para todas las bibliotecas que no son solo de encabezado y compilarlas manualmente.

Así que mi pregunta es básicamente, ¿hay alguna forma de aumentar selectivamente el impulso que solo copie los encabezados de las bibliotecas que me interesan y solo construir archivos de biblioteca para las bibliotecas que no sean de solo encabezado y me interesen (y las bibliotecas de impulso que son depende del curso)?

Probablemente haya muchas soluciones basadas en scripts / manuales para esto, pero si pudiera ejecutar algo solo con bjam sería mucho más útil para mí, ya que agregar nuevas bibliotecas o actualizar a una nueva versión de refuerzo sería muy simple.

EDITAR: se agregó la línea de comando completa para el primer enfoque:

bjam install --prefix=c:/temp/boostsmall --build-dir=C:/temp/boostsmalltemp --layout=system --with-filesystem variant=debug link=static threading=multi runtime-link=static

Cambió scoped_ptr a smart_ptr


Resuelto.

La solución bcp tenía archivos para los proyectos, sin embargo, necesitaba copiar el directorio de herramientas y la raíz del directorio boost al lugar donde copié todas mis libs para que todo funcionara.


Gran pregunta! Creo que este es un problema que he descubierto recientemente.

Ya tenía instaladas las bibliotecas completas de Boost, incluidas las que requerían una compilación por separado.

Logré crear un subconjunto de las bibliotecas de Boost (regex) para una aplicación en particular en la que estaba trabajando usando los siguientes pasos:

  1. Primero asegúrese de que el ejecutable bcp esté instalado en primer lugar. En la carpeta raíz de Boost, vaya a la carpeta tools / bcp y ejecute bjam.exe aquí. Para mí, esto creó el ejecutable bcp en el directorio [Boost path] / bin.v2 / tools / bcp / msvc-10.0 / release / link-static:

  2. A continuación, cree la carpeta donde desea que resida el subconjunto Boost. Esto podría ser una carpeta para un proyecto de Visual Studio en el que está trabajando.

  3. Ejecute la ejecución de bcp que creó, asegurándose de incluir las bibliotecas que desea incluir, así como la ubicación del directorio raíz de refuerzo y la carpeta de destino. Observe cómo se han incluido los componentes necesarios de Boost (por ejemplo, para expresiones regulares) en su carpeta de destino.

    bcp.exe regex --boost = "C: / Archivos de programa / boost_1_55_0 / boost_1_55_0" C: / Projects / RegexProject / BoostLite

  4. En su proyecto de Visual Studio configure los directorios y bibliotecas de inclusión adicional para que apunten a la carpeta ''Boost lite'' que se creó.

  5. Una última cosa, que creo que se describe anteriormente, tuve que ir a mi configuración habitual de la carpeta Boost y copiar la carpeta stage / lib necesaria que contiene todos los archivos lib necesarios para la versión del subconjunto y copiarlos aquí, solo algunos relacionados con expresiones regex. archivos lib en mi caso.

Descubrí que esto funcionó para mí. Cualquier comentario de las experiencias de otras personas sería apreciado.

Una publicación en el blog que describe lo mismo se puede encontrar aquí.