Maven gebruiken voor C/C++-projecten

Ik laat Maven bouwen rond een cluster van amateuristische, slecht geschreven en eerlijk gezegd primitieve C/C++-code (wat C/C++ betekent). Het probleem is dat er momenteel veel van in omloop is en niet gemakkelijk kan worden vervangen. Het bouwen ervan vereist veel stamkennis (je moet van kubus naar kubus gaan om erachter te komen hoe je verschillende onderdelen moet compileren/bouwen) en het vrijgeven is een totale nachtmerrie. (Nee – ik ga het niet herschrijven, vraag het alsjeblieft niet)
Mijn vraag is: moet ik maven-native-plugingebruiken om een ​​groot aantal korte makefiles te vervangen of exec-maven-plugingebruiken om deze eenvoudig uit te voeren?
Ik had vrij goede ervaringdus ver met de laatste die .NET doet en ik weet niet of ik moet investeren in de nativeplug-in of bij execmoet blijven? Als je ervaring hebt met “Mavenizing” C/C++, zou ik graag wat advies krijgen.


Antwoord 1, autoriteit 100%

Ik raad de maven-nar-pluginten zeerste aan. Ik vind het in veel opzichten superieur aan de alternatieven. Het vereist geen lijst met bronbestanden, behandelt meerdere besturingssystemen en architecturen, voert unit- en integratietests uit en volgt over het algemeen “the maven way”. Het introduceert een nieuw soort verpakking – de NAR, of “native archive”, die het artefact bevat waar u om geeft (.dll, .so, .a, .exe, enz.), maar ook metadata, headers, enz. in een manier die logisch is.

Het vereist wat werk vooraf om software van derden in NAR’s te verpakken, maar het is vrij eenvoudig. Zodra het NAR’s zijn, gebruikt u eenvoudig het normale Maven-afhankelijkheidsmechanisme om ermee te linken, bijvoorbeeld:

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

Een nadeel is dat het niet actief lijkt te worden onderhouden, maar het is volledig uitgerust en is een behoorlijk indrukwekkend voorbeeld van het maken van Maven-plug-ins.


Antwoord 2

Om een ​​equivalent te hebben bij Maven (Java).
Mijn advies is om CMake + CPM te gebruiken voor build- en PKG-beheer, de meeste gemeenschappelijke tools die in de C++-wereld worden gebruikt.
Als alternatief bestaat Gradle ook voor C++.

handige link: https: //medium.com/swlh/cpm-an-awesome-dependency-manager-for-c-with-cmake-3c53f4376766

Other episodes