2009-08-26 16 views
5

Estoy usando Visual Studio 2008 y escribiendo algunas cosas en C++. Estoy usando una biblioteca de Boost (que es , no el encabezado solamente).Boost linking, Visual Studio y control de versión

Por lo tanto, vincular a Boost requiere una para agregar el directorio a los binarios de Boost a la configuración de "rutas de enlace adicionales" del proyecto.

Sin embargo, ¿esto no entra en conflicto con el control de código fuente? Si controlo los archivos del proyecto, ¿no se incluiría también en ellos la ruta absoluta a Boost libs en mi computadora?

Obviamente no quiero que esto suceda, entonces ¿qué debo hacer? Solo agregar el directorio de Boost a "Directorios/Bibliotecas de Visual C++" no funciona.

+1

Por cierto, lo mismo es cierto para los archivos de encabezado, también. – gimpf

Respuesta

4

Agregando las rutas de Boost a "Directorios de Visual C++" debería funcionar. Debe agregar la ruta de acceso <Full path here>\boost_1_39_0 (sin impulso al final)
y la ruta de biblioteca <Full path here>\boost_1_39_0\bin.v2\lib (bin.v2 es un directorio de etapas que podría ser diferente en su caso).

Personalmente, almaceno las fuentes de refuerzo en mi control de fuente y uso las rutas relativas en la configuración del proyecto.

+0

No solo _debe_ funcionar, realmente _lo hace_. La única desventaja es que ya no es autónoma, es decir, requiere configuración de apuntar y hacer clic. Para mí, este es un juego espectacular, así que también check-in bibliotecas de terceros. Alternativa sería modificar el script de construcción en sí. Sin embargo, tiene su propio conjunto de problemas con VS IDE. – gimpf

1

Usamos un repositorio que contiene bibliotecas de terceros, luego usamos svn:externals para verificar las partes necesarias en el directorio base del proyecto, finalmente utilizamos rutas relativas para incluir directorios adicionales y bibliotecas en el archivo del proyecto. Funciona bien, la única desventaja es que puede terminar con varias copias de refuerzo en su disco duro. Usando uniones (la versión de Windows de enlaces simbólicos solo para directorios, funciona al menos desde Win2k, no está seguro acerca de NT) puede deshacerse del espacio desperdiciado.

0

Utilizo la variable de entorno BOOST_ROOT para algunas cosas, y funciona bien. Tienes que crearlo manualmente, y luego establecer las rutas en los archivos del proyecto como "$(BOOST_ROOT)\include" y "$(BOOST_ROOT)\lib" (o lo que sea que use tu diseño). Luego, todos deben establecer BOOST_ROOT en sus máquinas para señalar su instalación de Boost.

+0

Si utiliza esta opción, debe tener la precaución de utilizar diferentes versiones simultáneas de refuerzo para diferentes proyectos (un problema para la configuración amplia de Visual Studio también). – gimpf

+0

La forma en que he presentado Boost, todas las bibliotecas están en el directorio \ lib (la versión está en el nombre del archivo) y cada versión tiene un directorio en \ include (es decir, \ include \ boost-1.39 \). Los archivos del proyecto contienen "$ (BOOST_ROOT) \ include \ boost-1.39" y "$ (BOOST_ROOT) \ lib". –

1

Colocamos todos nuestros encabezados y bibliotecas de terceros utilizados por un proyecto en el árbol de proyectos en control de fuente. Esto significa que rastreamos la versión de las bibliotecas con la fuente.

Luego hacemos referencia a los directorios de inclusión y de origen en las propiedades del proyecto. No usamos los directorios de Visual C++ ya que esto depende demasiado de la ubicación de los archivos en los diferentes sistemas de desarrollo y tampoco se puede rastrear las versiones de las bibliotecas.

La única excepción a esto sería la plataforma sdk cuando se desarrolla con vc6.

Conector Shameless: Ahora administramos nuestra configuración de proyecto vc con CMake y esto facilita mucho las cosas, especialmente para proyectos grandes.

1

Usted le dice a VS sobre Boost por computadora, no por moda. Al igual que Directx y otras bibliotecas que no son específicas de un proyecto. Creemos que es razonable suponer que el impulso se usa en más de un proyecto.

No rastreamos el origen de la biblioteca externa en nuestro SCM de proyecto a menos que tengamos una relación estrecha con los detalles de implementación (parcheándolo o lo que sea). Para boost, directx, windows sdk, solo le pedimos que ejecute el instalador respectivo y configure VC++ Directories cuando configure su entorno de desarrollo.

+4

¿Cómo construyes versiones antiguas de tus proyectos después de actualizar las versiones de boost? – iain

Cuestiones relacionadas