我们的项目变得相当大,我们的构建系统不再可扩展。我们正在linux机器上进行跨平台开发。我们有太多的平台需要构建,甚至还有更多的构建选项。我们认为我们需要升级基于Makefile的构建环境。
以下是要求(在理想的世界中):
- 快速(因此没有libtool)
- 可以进行并行构建
- 交叉编译友好
- Ccache集成
- 进行增量构建,如果满足某些条件,则可能短路(如果a、b、c选项未更改,则短路,如果更改则重建)
- 易于编写脚本(python集成将是完美的)
- 用户友好语法
- 分布式系统。模块可以相互独立开发
- 可以构建第三方库(使用自动工具,cmake..)
- 可以跟踪模块之间的依赖关系(但足够灵活,可以用其他外部模块替换模块)
- 内置单元测试支持
- 大型二进制文件可以与版本控制分开存储,并且可以在需要时下载
- 可以跟踪开源许可证
- git集成
您是否知道有任何工具(或工具组)可以满足(至少部分)这些要求?目前我倾向于吉普赛+忍者。但是语法不是很友好,也没有文档。所以这是一个艰难的销售。
您提到了Python集成,所以SCons听起来很合适。它完全基于Python(构建脚本实际上是Python脚本),非常灵活,并且满足了您的许多其他需求。
来自网站:
SCons是一种开源软件构建工具,也就是说,是下一代构建工具。将SCons视为经典Make实用程序的改进、跨平台替代品,其集成功能类似于autoconf/automake和编译器缓存(如ccache)。简而言之,SCons是一种更简单、更可靠、更快的软件构建方式。
就C++而言,一个非常好的构建系统是CMake。
ninja不应该由最终用户使用,而应该由CMake等其他高级构建工具使用。这确实是一个很好的选择,尤其是对于大型和跨平台项目。它没有内置的python支持,但您很少或永远不需要使用CMake的外部脚本——它有用于大多数常见任务的工具。