一个常见的问题是为什么我应该选择 Meson 而不是不同的构建系统 X?对此没有一个真正的答案,因为这取决于用例。几乎所有的构建系统都具有构建大中型项目所需的所有功能,因此通常会在其他方面做出决定。在这里,我们列出了各种构建系统的一些优缺点,以帮助您自己做出决定。
Meson
优点
最快的构建系统查看测量,用户友好,设计为对开发人员尽可能不可见,对现代工具的本机支持(预编译头、覆盖、Valgrind 等)。不是图灵完备的,所以构建定义文件很容易阅读和理解。
缺点
相对较新,因此还没有庞大的用户群,因此可能包含一些未知的错误。 Visual Studio 和 XCode 后端的质量不如 Ninja 后端。
CMake
优点
对多个后端(Visual Studio、XCode 等)的大力支持。
缺点
脚本语言使用起来很麻烦。一些简单的事情比必要的要复杂。
GNU Autotools
优点
对传统 Unix 平台的出色支持,现有模块的大量选择。
缺点
不必要的缓慢、复杂、难以正确使用、不可靠、调试痛苦、对大多数人来说难以理解、对非 Unix 平台(尤其是 Windows)的支持不佳。
SCons
优点
Python 的全部功能可用于定义您的构建。
缺点
慢的。要求您在每次调用时传递配置设置。也就是说,如果您先执行 scons OPT1 OPT2,然后再执行 scons,它将重新配置所有内容,而无需设置 OPT1 和 OPT2。每个其他构建系统都会记住上次调用的构建选项。
Bazel
优点
证明可以扩展到非常大的项目。
缺点
在 Java 中实现。 Windows 支持不佳。非常关注谷歌的做事方式(这可能是好事也可能是坏事)。贡献代码需要签署 CLA。