将Maven用于C / C ++项目


85

我将Maven构建为围绕业余,写得不好和坦率的集群-原始C / C ++代码(意味着一些C,一些C ++)。问题是-目前有很多流通产品,无法轻易更换。构建它需要很多部落知识(您必须从一个多维数据集到另一个多维数据集,才能了解如何编译/构建各个部分),而发布则是一个噩梦。(不-我不会重写它,请不要问。)我的问题是-我应该使用maven-native-plugin它替换大量简短的makefile还是exec-maven-plugin仅执行这些文件?到目前为止,我在后者做.NET方面相当不错的经验,不知道我应该投资于native插件还是继续使用exec?如果您有使用“ Mavenizing” C / C ++的经验,我希望获得一些建议。


我正要尝试。如我所见,它仍在维护中,并在此同时移动:github.com/sonatype/maven-nar-plugin
espakm

Answers:


90

我强烈推荐maven-nar-plugin。我发现它在许多方面都优于替代方案。它不需要列出源文件,处理多种操作系统和体系结构,处理单元测试和集成测试,并且通常遵循“行家之道”。它引入了一种新的打包方式-NAR或“本机存档”,其中包含您关心的工件(.dll,.so,.a,.exe等),还包含a中的元数据,标头等。有意义的方式。

确实需要一些前期工作才能将第三方软件打包到NAR中,但是非常简单。一旦它们是NAR,您只需使用常规的Maven依赖机制与它们链接,例如:

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

一个缺点是它似乎没有得到积极维护,但是功能齐全,并且是Maven插件编写的一个令人印象深刻的示例。


感谢您的提示-我一定会检查的!
波士顿,

我将接受此作为答案-这确实比maven-native-plugin
更好

祝好运。需要注意的一件事-今天早上我收到通知(真是巧合),我一年前提交的错误今天已经解决-维护似乎已经作出反应。
SingleShot

2
看起来maven-nar-plugin正在通过sonatype进行维护:issue.sonatype.org/browse/NAR
tommy chheng 2011年

1
当使用nar-maven-plugin的示例时,请执行以下操作使其工作:mvn package-这将生成测试包,然后可以运行取决于NarSystem的测试
serup
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.