我正在把Maven构建在业余,写得不好和坦率的群集之上 - 原始的C / C ++代码(意思是一些C,一些C ++)。问题是 - 目前流通很多,不容易更换。构建它需要大量的部落知识(你必须从立方体到立方体才能找到如何编译/构建各种部分)并且释放是完全的噩梦。 (不 - 我不会改写它,请不要问)
我的问题是 - 我应该使用maven-native-plugin
来替换多个简短的makefile,还是使用exec-maven-plugin
来执行这些?
到目前为止我有pretty good experience,后者做.NET,不知道我是否应该投资native
插件或留在exec
?如果你有“Mavenizing”C / C ++的经验,我很乐意得到一些建议。
答案 0 :(得分:89)
我强烈推荐maven-nar-plugin。我发现它在很多方面都优于替代品。它不需要列出源文件,处理多个操作系统和体系结构,处理单元和集成测试,并且通常遵循“maven方式”。它引入了一种新的包装--NAR或“本机存档”,它包含您关注的工件(.dll,.so,.a,.exe等),还包含元数据,标题等。有道理的方式。
确实需要一些前期工作才能将第三方软件打包到NAR中,但它非常简单。一旦它们是NAR,您只需使用普通的Maven依赖机制与它们链接,例如:
<dependency>
<groupId>cppunit</groupId>
<artifactId>cppunit</artifactId>
<scope>test</scope>
</dependency>
一个缺点是它似乎没有被主动维护,但它功能齐全,是Maven插件创作的一个相当令人印象深刻的例子。
答案 1 :(得分:0)
在 Maven (Java) 上有一个等价物。 我的建议是使用 CMake + CPM 进行构建和 PKG 管理,这是 C++ 世界中使用的大多数公共工具。 作为 C++ 的替代 Gradle 也存在。
有用的链接:https://medium.com/swlh/cpm-an-awesome-dependency-manager-for-c-with-cmake-3c53f4376766