我将 Maven 构建在业余、编写不佳且坦率地说 - 原始 C/C++ 代码(意味着一些 C,一些 C++)的集群周围。问题是 - 目前有很多它在流通,不能轻易更换。构建它需要大量的部落知识(您必须从一个立方体转到另一个立方体才能了解如何编译/构建各个部分)并且发布完全是一场噩梦。(不——我不打算重写它,请不要问)我的问题是——我应该用它maven-native-plugin
来替换大量的短生成文件还是exec-maven-plugin
用来简单地执行这些?到目前为止,我在后者做 .NET 方面有很好的经验,不知道我应该投资native
插件还是继续使用exec
?如果您有“Mavenizing”C/C++ 的经验,我很想得到一些建议。
问问题
81741 次
2 回答
93
我强烈推荐maven-nar-plugin。我发现它在很多方面都优于替代品。它不需要列出源文件,处理多个操作系统和架构,处理单元和集成测试,并且通常遵循“maven 方式”。它引入了一种新的打包方式 - NAR 或“本机存档”,其中包含您关心的工件(.dll、.so、.a、.exe 等),还包含元数据、标头等。有道理的方式。
将第三方软件打包到 NAR 中确实需要一些前期工作,但它非常简单。一旦它们成为 NAR,您只需使用正常的 Maven 依赖机制来链接它们,例如:
<dependency>
<groupId>cppunit</groupId>
<artifactId>cppunit</artifactId>
<scope>test</scope>
</dependency>
一个缺点是它似乎没有得到积极维护,但它功能齐全,是 Maven 插件创作的一个相当令人印象深刻的例子。
于 2009-10-09T05:34:12.453 回答
1
在 Maven (Java) 有一个等价物。我的建议是使用 CMake + CPM 进行构建和 PKG 管理,这是 C++ 世界中使用的大多数常用工具。作为替代 Gradle 也存在于 C++ 中。
有用的链接:https ://medium.com/swlh/cpm-an-awesome-dependency-manager-for-c-with-cmake-3c53f4376766
于 2021-08-08T17:03:37.440 回答