在开源社区中构建 C/C++ 程序的最佳方式是啥? [关闭]

Posted

技术标签:

【中文标题】在开源社区中构建 C/C++ 程序的最佳方式是啥? [关闭]【英文标题】:What is the best way to build C/C++ program in open source community? [closed]在开源社区中构建 C/C++ 程序的最佳方式是什么? [关闭] 【发布时间】:2015-03-24 03:16:39 【问题描述】:

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

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

谢谢!

【问题讨论】:

在您看来,为什么手动创建的 Makefile '不好'。 使用autoconf 似乎是一种被广泛接受且运作良好的方式。虽然设置起来相当复杂,但与 CMake 或类似的构建系统相比, 我认为标准顺序是“配置”、“制作”和“制作安装”。这是您正在考虑的选择吗? @DOUGLASO.MOEN 我必须同意,这个序列不一定必须使用autoconf 工具创建。 【参考方案1】:

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

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

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

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

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

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

【讨论】:

以上是关于在开源社区中构建 C/C++ 程序的最佳方式是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 Web 应用程序中获取构建信息的最佳方式是啥?

构建应用程序架构(活动和片段)的最佳方式是啥

开始现代游戏编程和应用程序编程的最佳方式是啥? [关闭]

在 iOS 应用程序中本地存储数据的最佳方式是啥? [复制]

在 Angular (5) 应用程序中添加浮动按钮的最佳方式是啥?

在 Rails 4 应用程序中显示位置的最佳方式是啥?