2009-10-29 14 views

Respuesta

21

Muchas distribuciones incluyen boost en sus repositorios oficiales, pero no las proporciona de manera predeterminada en una instalación estándar (en otras palabras, no está instalado por defecto, pero es relativamente fácil de instalar).

Por otro lado, presumiendo que estás preguntando esto porque te estás preguntando si puedes usar boost en un proyecto que deseas trabajar en muchas distribuciones: la mayoría de las bibliotecas de boost son solo encabezado porque son plantillas, lo que significa que se compilan en su proyecto y no importa si una distribución los tiene instalados (el mismo efecto que vincular estáticamente).

Para aquellas partes de boost que no son solo encabezado, puede vincular estáticamente y aún así hacer un binario que se ejecutará en distribuciones que no vienen con boost.

+0

¡Estás leyendo mi mente! – jldupont

+1

+1 en la distinción de plantillas frente a bibliotecas – Javier

+2

También puede vincular en bibliotecas estáticas, si está utilizando una de las bibliotecas que no es solo encabezado, siempre puede hacer un binario distribuible. El truco es si quieres que el usuario pueda construirlo por sí mismo, entonces necesitan los encabezados (y bibliotecas si es necesario), pero si están construyendo cosas ellos mismos, probablemente no sea demasiado pedir. – teeks99

1

Tenga en cuenta que las distribuciones con Boost incluidas pueden incluir una versión realmente anterior de Boost. Descubrí que esto puede causar muchos problemas pequeños.

Por ejemplo, encontrará una clase whizz-bang que está en boost v.latest y no está en la versión v.incluida. Si dicha clase de whiz-bang es solo 'encabezados', puedes evitar esto bastante fácilmente. Si dicha clase involucra una biblioteca, el factor de dolor aumenta (los binarios existentes querrán bibliotecas compartidas de la versión v.incluidas: su código querrá v.latest).

Estoy seguro de que se pueden solucionar todos estos problemas, pero probablemente sean más de lo que planeaba, así que reserve algo de tiempo en su agenda/carrera para lidiar con ellos.

Cuestiones relacionadas