Linux构建系统工具

3
我们的项目变得非常庞大,我们的构建系统不再适用于规模。我们正在Linux机器上进行跨平台开发。我们有太多的平台需要构建,甚至还有更多的构建选项。我们认为需要升级基于Makefile的构建环境。
以下是理想情况下的要求:
- 快速(因此不能使用libtool) - 支持并行构建 - 友好的交叉编译 - Ccache集成 - 支持增量构建,如果满足某些条件,则可以短路(如果未更改a、b、c选项则短路,否则重新构建) - 易于脚本化(最好集成Python) - 用户友好的语法 - 分布式系统。各个模块可以单独开发 - 可以构建第三方库(使用autotools、cmake等) - 可以跟踪模块之间的依赖关系(但足够灵活,可以用替代外部模块替换模块)。 - 内置单元测试支持 - 可以将大型二进制文件存储在版本控制之外,并在需要时下载 - 可以跟踪开源许可证 - git集成
您是否了解任何工具(或一组工具),可以满足(至少部分)以上要求?目前,我倾向于使用gyp + ninja。但是语法不太友好,也没有文档。所以这很困难。

为什么要立即排除libtool?您是否对现代版本进行了基准测试并确认它不足? - William Pursell
大约6个月前,我将我的一个项目(~4K文件)迁移到了gyp。它以前是在configure/libtool的基础上构建的。构建时间从中高20秒降至几十秒(分钟级别)。除非在过去一年左右有重大改进,否则我仍然坚持我的说法。顺便说一句,时间差在我的另一台配备SSD的服务器上更低。 - l.thee.a
3个回答

1

你提到了Python集成,所以SCons听起来很适合你的需求。它完全基于Python(构建脚本实际上是Python脚本),非常灵活,并且符合你其他许多要求。

从网站上可以看到:

SCons是一个开源软件构建工具,也就是下一代构建工具。把SCons想象成一个改进的、跨平台的替代经典Make实用程序的工具,具有类似于autoconf/automake和编译器缓存(如ccache)的集成功能。简而言之,SCons是构建软件更轻松、更可靠、更快速的方法。


1
就C++而言,一个非常好的构建系统是CMake

0

ninja 不应该被最终用户使用,而是由其他高级构建工具(如 CMake)使用。对于大型和跨平台项目来说,这确实是一个很好的选择。它没有内置的 Python 支持,但你很少或从不需要使用 CMake 进行外部脚本编写 - 它有用于大多数常见任务的工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接