我将启动一个新的C++项目(它可能也有一些C组件),我正在寻找一个现代化的,工业实力(即非测试版)构建系统。该软件将由几个开发人员在3-5年内创建,并将在Linux上运行(Mac和Windows稍后可能会被支持)。我正在寻找的东西,有更好的理解性,易用性和可维护性比例如make,但仍然强大到足以处理一个复杂的项目。首选开放源码软件。
到目前为止,我开始研究Boost.Build、CMake、Maven和SCons,并喜欢所有这些特性和概念,但我缺乏为大型项目做出决策的经验。
发布于 2010-05-17 18:18:10
我使用SCons已经一年多了,它真的很酷。这是一个完整的构建系统,而不是构建脚本生成器。
它是基于Python的,您可以用Python编写SConstruct和SConscript (相当于Makefile),它允许您调用任何您想要的可用库,还有一个更清晰的语法,即Makefile授权的语法。
由于Python是跨平台的,所以SCons也是跨平台的,所以没有问题。
它与许多目标捆绑在一起:
它非常高效,甚至还提出了一些高级特性(比如将预处理文件的散列存储在sqlite中而不是使用时间戳),即使最终决定了您的策略。
它还提供免费的依赖周期检测(Makefiles绝对不提供),而且界面通常更好/更自动化。
我说过它很有效率吗?显然,它允许并行执行多个作业;)
而且它也是免费的,就像在免费饮料中一样,可以随意贡献;)
我只能推荐它。
发布于 2010-05-17 09:27:13
我没有其他的经验,但如果你想要一个跨平台,跨工具链构建系统,使用CMake。CMake实际上不是一个构建系统,它是一个构建脚本生成器--它为许多构建系统生成实际构建脚本,并且(我认为这是优势)为主要IDE(如Visual和KDevelop )生成项目文件。顺便说一句,最近的KDevelop版本为CMake文件提供了智能感知。
生成的构建脚本或Visual解决方案并不像手动创建时那样优雅,但是由于您也不必手动维护它们,所以很好。
CMake的缺点是它并没有提供很多内置工具,或者是一种简单的方法来扩展它(与MSBuild相比,它当然只是一个构建系统,而不是一个生成器)。我们的Linux开发人员倾向于调用Unix命令行工具来执行压缩/解压缩等操作,这在典型的Windows中是不可用的,而MSBuild则有数千个来自社区项目的附加命令,因此您不需要使用命令行,而且为MSBuild创建一个新的任务非常容易。我目前正在研究如何克服CMake的这些限制,因为这意味着我们不能完全在Windows上构建,即使代码本身构建得很好。
编写CMake文件不是一次美好的经历,但没关系。该语言有一些奇怪的怪癖(比如必须精确地重复一个if-条件,这将使您发疯,特别是在实验时),而且您会非常非常不喜欢在每个具有自定义构建规则的目录中都有一个名为CMakeLists.txt的文件(在一个大型项目中,这些规则可能很多),而且它们都显示在您的IDE中;)
发布于 2015-02-10 23:10:12
未来的几年..。
其他未提及的问题:
-m32,这在64位系统上很糟糕。如果您喜欢makefile生成器,我建议您使用fbuild或Boost.Build...or Gyp。
如果您想扩展基本功能,一定要使用fbuild。如果您有很多特定于平台的标志/选项以及大量的混乱,请使用Boost.Build。如果您需要一个makefile生成器或有很多配置,请尝试Gyp。
https://stackoverflow.com/questions/2847730
复制相似问题