Usando Maven para proyectos C / C ++

85

Estoy poniendo la compilación de Maven en torno a un grupo de código C / C ++ amateur, mal escrito y francamente primitivo (es decir, algo de C, algo de C ++). El problema es que hay mucho en circulación actualmente y no se puede reemplazar fácilmente. Construirlo requiere mucho conocimiento tribal (tienes que ir de cubo en cubo solo para descubrir cómo compilar / construir varias partes) y liberarlo es una pesadilla total. (No, no voy a reescribirlo, por favor no pregunte) Mi pregunta es: ¿debo usar maven-native-pluginpara reemplazar multitud de archivos MAKE cortos o usarlos exec-maven-pluginsimplemente para ejecutarlos? Tuve una experiencia bastante buena hasta ahora con este último haciendo .NET y no sé si debería invertir en un nativecomplemento o quedarme exec. Si tiene experiencia con "Mavenizing" C / C ++, me encantaría recibir algunos consejos.

Bostone
fuente
Estoy a punto de probarlo. Como veo, todavía se mantiene y se ha movido mientras tanto aquí: github.com/sonatype/maven-nar-plugin
espakm

Respuestas:

90

Recomiendo ampliamente el complemento maven-nar-plugin . Lo encuentro superior en muchos aspectos a las alternativas. No requiere enumerar los archivos de origen, maneja múltiples sistemas operativos y arquitecturas, maneja pruebas unitarias y de integración, y generalmente sigue "el camino de los expertos". Introduce un nuevo tipo de empaque: el NAR, o "archivo nativo", que contiene el artefacto que le interesa (.dll, .so, .a, .exe, etc.) pero también metadatos, encabezados, etc. en un manera que tenga sentido.

Requiere un poco de trabajo inicial empaquetar el software de terceros en los NAR, pero es bastante sencillo. Una vez que son NAR, simplemente usa el mecanismo de dependencia normal de Maven para vincularlos, por ejemplo:

<dependency>
  <groupId>cppunit</groupId>
  <artifactId>cppunit</artifactId>
  <scope>test</scope>
</dependency>

Un inconveniente es que no parece que se mantenga de forma activa, pero tiene todas las funciones y es un ejemplo bastante impresionante de la creación de complementos de Maven.

Un solo tiro
fuente
Gracias por el consejo, ¡definitivamente lo comprobaré!
Bostone
Voy a aceptar esto como respuesta - esto de hecho parece ser superior a maven-native-plugin
Bostone
Buena suerte. Una cosa a tener en cuenta: recibí una notificación esta mañana (qué coincidencia) de que un error que envié hace un año se resolvió hoy; el mantenimiento parece haber reaccionado.
SingleShot
2
Parece que maven-nar-plugin está siendo mantenido en actividad ahora por sonatype: issues.sonatype.org/browse/NAR
tommy chheng
1
cuando use ejemplos de nar-maven-plugin, haga lo siguiente para que funcione: paquete mvn: esto generará los paquetes de prueba y luego es posible ejecutar la prueba que depende de NarSystem
serup