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

What is the best way to build C/C++ program in open source community?

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

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

谢谢!

最 "open source" 的方法是重组编译器链以使用自动工具。

基本上,它允许在多个 "unknown" 系统之一上进行编译,方法是检测需要的库及其位置,然后编写 makefile 以匹配平台。

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

如果你想 "push the envelope" Apache 的 Maven 也可以用 NAR 插件编译 C 和 C++。就个人而言,我非常喜欢 Apache 的 Maven;但是,如果您不熟悉它,NAR plus "learning maven" 将是一个相当大的挑战。同时,每个在 Linux 盒子上从源安装的人很快就会熟悉 auotmake 的 "configure; make; make install" 例程,所以使用 Maven 来做这个真的有点 "outside the box".

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

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