2009-01-13 10 views
9

¿Hay alguna forma de obtener el código fuente de las bibliotecas boost? He navegado por el repositorio SVN y pude ver solo archivos HPP. No hay archivos fuente disponibles allí. Me gustaría ver el código fuente de "shared_ptr". ¿Alguien puede guiarme?boost source code

¿De dónde también puedo descargar la utilidad BCP?

Respuesta

27

La gran mayoría del código fuente está completamente en los archivos de encabezado; tiene que estar en orden para que funcionen las plantillas. No puede poner el código de plantilla en los archivos fuente y compilarlos por separado.

+1

He leído de Bruce Eckel (Pensando en C++) que, poniendo todo el código en archivos de cabecera es menos eficiente y es una mala práctica. Pero dado que boost lo está usando, estoy confundido. ¿Es una práctica aceptada? –

+2

Boost tiene que hacer esto debido a su amplio uso de plantillas.Aumenta el tiempo de compilación (a veces significativamente) pero no hay una forma real de evitarlo. También hace que sea más fácil comenzar a usar boost, ya que no hay bibliotecas para distribuir con su aplicación. – Eclipse

+0

Como recuerdo, el código está todo en plantillas, que no tiene una implementación concreta hasta que la plantilla se expanda en su código de cliente. El código es la plantilla instanciada, no el "encabezado". – JasonTrue

3

Como mencionó Adam, casi todo está en los encabezados. Algunos, como boost :: regex, requieren que se generen archivos de origen, pero esos también se incluyen en la descarga principal.

La utilidad BCP está incluida en la descarga principal.

1

Las bibliotecas Boost tienen la siguiente estructura de directorios del núcleo:

-> impulso: Contiene los archivos de cabecera. Como gran parte de Boost se implementa en los encabezados, esto también contiene mucha implementación, generalmente en subdirectorios detallados.

-> lib: contiene las fuentes precompiladas, suites de prueba, ejemplos y, en ocasiones, documentación de las bibliotecas.

-> doc: Contiene algunos documentos.

-> herramientas: contiene las herramientas como Boost.Jam, Boost.Build, Wave independiente, y también BCP.

3

La mayor parte del refuerzo está en los encabezados, pero algunas partes están en cpp -files también. El doc index page enumera qué bibliotecas son encabezado/no encabezado solamente. Puede descargar la fuente de impulso here. La fuente de bcp también está disponible en el archivo, en el subdirectorio tools/bcp.

6

Todos los archivos de origen (.cpp) están bajo bajo/impulso/libs/< nombre-biblioteca >

La mayoría de las bibliotecas Boost consiste en su totalidad de las cabeceras. Las excepciones son:

  • prueba
  • hilo
  • onda
  • serialización
  • señales
  • pitón
  • regex
  • matemáticas
  • gráfico
  • iostreams
  • sistema de archivos
  • fecha y hora