c++ - 在开源社区构建 C/C++ 程序的最佳方式是什么?

标签 c++ c build autoconf automake

我们有一个非常古老且庞大的项目,主要由 C(和一小部分 C++)编写,并且可以在 Linux 和 Windows 中构建。目前,我们手动编写该项目中的所有Makefile,我认为这不好。

现在我们想让这个项目完全开源。然而,在此之前,我们想要增强构建这个项目的方式。所以我想知道开源社区中构建此类项目的最佳/流行方式是什么?我对 autoconf/antomake 了解一些,它似乎已经存在很长时间了,只是想知道是否有任何新的更好的方法来构建 C/C++ 项目?

谢谢!

最佳答案

最“开源”的方法是重新调整编译器链以使用自动工具。

基本上,它允许通过检测所需的库及其位置,然后编写 makefile 以匹配平台,在许多“未知”系统之一上进行编译。

对于 C 和 C++ 来说,这是一个非常好的匹配。

如果你想“挑战极限”,Apache 的 Maven 还可以使用 NAR 插件编译 C 和 C++。就我个人而言,我非常喜欢 Apache 的 Maven;然而,如果你不熟悉它,NAR 加上“学习专家”将是一个相当大的挑战。同时,每个在 Linux 机器上从源代码安装的人都会很快熟悉 auotmake 的“configure; make; make install”例程,因此使用 Maven 来执行此操作确实有点“开箱即用”。

还有CMake;然而,CMake 的好处并没有真正让我印象深刻,因为它与更成熟的 autotools 工具链有很大不同。也就是说,CMake 是一个非常好的设置,它变得更加复杂(并且越来越匹配 automake 环境),因为它必须支持像 automake 这样的成熟工具链所支持的问题。

总而言之,我会说坚持使用 autoconf/autotools/automake。有很多示例,虽然您可能必须利用 M4 宏语言,但构建系统的每个部分都是可读的,并且可以用来创建您自己的自定义扩展。

关于c++ - 在开源社区构建 C/C++ 程序的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29224430/

相关文章:

c++ - 标记仅用于重写的函数的正确方法是什么?

c# - 使用 C++/CLI 而不是 C# 来包装(第三方)C 库 (dll) 有什么优势?

c - 在共享内存中分配 N 大小的数组

java - Hadoop 构建在 Windows 7、Maven 3.1.1、Jdk 1.7.0_45 上失败(Hadoop src 2.2.0)

c++ - 检索 QProcess 的环境变量

c++ - 在 C++ 中以编程方式使用 openssl 生成 CA 证书

node.js - 构建依赖于另一个规则的 bazel 规则

ios - Flutter 在我的 Flutter 应用程序的根目录上构建 IOS 不起作用

c++ - 如何在 C++ 中构建 N 位变量?

c - 将结构体存储在数组中