2011-01-04 34 views
9

Ya hay algunas preguntas sobre administradores de dependencias aquí, pero me parece que son sobre sistemas de compilación, mientras que estoy buscando algo dirigido simplemente a simplificar el seguimiento y resolución de dependencias (y no estoy necesariamente interesado en aprender un nuevo sistema de compilación).Administrador de dependencias de código fuente para C++

Entonces, normalmente tenemos un proyecto y un código común con otro proyecto. Este código común está organizado como una biblioteca, así que cuando quiero obtener la última versión de código para un proyecto, también debería obtener todas las bibliotecas desde el control de origen. Para hacer esto, necesito una lista de dependencias. Luego, para construir el proyecto, puedo reutilizar esta lista también.

He mirado a Maven e Ivy, pero no estoy seguro de si serían apropiados para C++, ya que parecen bastante orientados a Java (aunque puede haber complementos para C++, no he encontrado gente recomendándolas).

Lo veo como una herramienta de GUI que produce una lista de dependencia estandarizada que luego puede ser analizada por diferentes scripts, etc. Sería bueno si pudiera integrarse con control de fuente (etiqueta, obtener una versión etiquetada con dependencias, etc.), pero eso es opcional

¿Tiene alguna sugerencia? Tal vez me estoy perdiendo algo, y por lo general se hace de otra manera sin necesidad de una herramienta de este tipo? Gracias.

+0

@ 7vies: No conozco ninguna herramienta, la empresa para la que trabajo terminó su propio sistema (que ahora es mucho más allá del objetivo inicial), estoy realmente interesado en los enfoques libres existentes, si sólo para quizás recoger ideas :) –

+0

@Matthieu: esa es una opción, pero preferiría personalizar una herramienta existente para nuestras necesidades –

+0

Puede usar Maven con http://duns.github.com/maven-nar-plugin/ (C, C++, .so etc.). En función de eso, puede crear información de dependencia que le proporcione la lista del componente/módulo/lib del que depende un módulo para la compilación. Si los componentes han sido implementados de forma independiente por otros, puede usar otra herramienta de plugin (maven-versions-plugin http://mojo.codehaus.org/versions-maven-plugin/examples/display-dependency-updates.html) para ver si existe una versión más nueva de módulo, etc. Para que pueda actualizar sus dependencias. – khmarbaise

Respuesta

2

Puede usar Maven en relación con C++ de dos maneras. Primero, puede usarlo para la administración de la dependencia de los componentes entre ellos. En segundo lugar, puede usar Maven-nar-plugin para crear bibliotecas compartidas y pruebas unitarias en relación con la biblioteca de impulso (mi experiencia). Al final puede crear RPM (maven-rpm-plugin) para tener un medio de instalación adecuado. Además, he creado la instalación para el entorno de CI a través de Maven (RPM para Hudson, instalación de Nexus en RPM).

+0

para mí es Windows/MSVC, por lo que es de alguna manera diferente. Me gustaría saber qué tan exitoso ha funcionado para usted la gestión de la dependencia de Maven, ¿ha notado alguna limitación o cree que necesita alguna otra herramienta? –

+0

Si solo te preocupa Windows, ¿qué tal si usas msbuild? Me imagino que Visual Studio tiene cierto soporte para tales características. Además, si tiene la versión más reciente de Visual Studio 2010, puede encontrar esta presentación interesante: http: //blogs.msdn.com/b/vcblog/archive/2011/01/06/alm-for-c-in-visual -studio-2010.aspx –

+0

Estoy interesado en administrar dependencias de múltiples repositorios de C++ con maven. ¿Dónde puedo encontrar un tutorial? – dilig0

1

No estoy seguro de si vería un sistema de control de versiones (VCS) como herramienta de compilación, pero Mercurial y Git admiten sub-repositorios. En su caso un sub-repositorio sería sus dependencias:

Utilice sus VCS para archivar los resultados de compilación - necesaria para el mantenimiento de todos modos - y referir a las librerías y archivos de encabezado en su entorno de compilación.

Si está buscando una referencia eche un vistazo a https://android.googlesource.com/platform/manifest.

+1

Este es un modelo de dependencias muy simplificado, siempre hay limitaciones de las cuales estoy bastante seguro que causarán problemas, ya que 'svn: externals' do –

+0

Tengo experiencia con Debian's (la conocida distribución de Linux) y su entorno de compilación. Es muy centrado en Debian y Linux y debes seguir muchas reglas, p. debe usar el sistema de administración de paquetes, incluidos los repositorios auto mantenidos. Si sigue todo eso, obtendrá un excelente entorno de desarrollo e implementación: dependencias de versiones, conflictos, reemplazos, alternativas en el desarrollo y tiempo de implementación. Nunca vi nada comparable, pero es muy específico de Debian y Linux. Tiene restricciones en todas partes. Tienes que elegir algo donde puedas controlarlo. –

+0

en este caso, el sistema de gestión de paquetes es el administrador de dependencias. Y, por supuesto, no está basado en sub-repositorios y no está incorporado en algunos VCS ... –

Cuestiones relacionadas