【问题标题】:linux build system toollinux构建系统工具
【发布时间】:2026-02-15 01:35:02
【问题描述】:

我们的项目变得相当大,我们的构建系统不再扩展。我们正在linux机器上进行跨平台开发。我们有太多的平台可以构建,甚至更多的构建选项。我们认为我们需要升级基于 Makefile 的构建环境。

这些是要求(在理想世界中):

  • 快速(所以没有 libtool)
  • 可以进行并行构建
  • 交叉编译友好
  • Ccache 集成
  • 是否增量构建并且在满足某些条件时可能会短路(如果 a、b、c 选项未更改则短路,如果更改则重建)
  • 易于编写脚本(python 集成将是完美的)
  • 用户友好的语法
  • 分布式系统。模块可以相互分开开发
  • 可以构建第三方库(使用 autotools、cmake ..)
  • 可以跟踪模块之间的依赖关系(但足够灵活,可以用其他外部模块替换模块)。
  • 内置单元测试支持
  • 大型二进制文件可以与版本控制分开存储,如果需要可以下载
  • 可以跟踪开源许可证
  • git 集成

您是否知道有任何工具(或一组工具)可以满足(至少部分)这些要求?目前我倾向于gyp+ninja。但是语法不是很友好,也没有文档。所以这是一个艰难的销售。

【问题讨论】:

  • 为什么要立即关闭 libtool?您是否对现代版本进行了基准测试并确认它是不够的?
  • 大约 6 个月前,我将我的一个项目(~4K 文件)移到了 gyp。它以前是在 configure/libtool 之上构建的。构建时间从中高 20 秒下降到高 10 秒(以分钟计)。除非在过去一年左右做出重大改进,否则我支持我的声明。顺便说一句,我的其他具有 SSD 的服务器上的时间增量较低。

标签: linux cross-compiling build-system ccache


【解决方案1】:

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

来自网站:

SCons 是一种开源软件构建工具,即下一代构建工具。将 SCons 视为经典 Make 实用程序的改进的跨平台替代品,具有类似于 autoconf/automake 和编译器缓存(如 ccache)的集成功能。简而言之,SCons 是一种更简单、更可靠、更快速的软件构建方式。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】: