Build 递归/嵌套构建系统?

Build 递归/嵌套构建系统?,build,makefile,Build,Makefile,是否存在具有以下标准的现有构建系统 可嵌套/递归。也就是说,没有像CMake或(非递归)make中那样的“顶级”构建文件,或者几乎没有其他构建系统 在源代码构建中。这是构建系统干净可嵌套/递归所必需的 多种语言的自动依赖项扫描 使用声明性而非命令式语法的配置文件 配置文件语法支持添加任意自定义生成规则 没有IDE项目生成膨胀 没有用于跨平台实现的ShowStopper 基于散列的更改检测(或至少~something)优于时间戳 自由软件 基本上,我想要的是能够在系统范围内管理软件构建依赖项的

是否存在具有以下标准的现有构建系统

  • 可嵌套/递归。也就是说,没有像CMake或(非递归)make中那样的“顶级”构建文件,或者几乎没有其他构建系统
  • 在源代码构建中。这是构建系统干净可嵌套/递归所必需的
  • 多种语言的自动依赖项扫描
  • 使用声明性而非命令式语法的配置文件
  • 配置文件语法支持添加任意自定义生成规则
  • 没有IDE项目生成膨胀
  • 没有用于跨平台实现的ShowStopper
  • 基于散列的更改检测(或至少~something)优于时间戳
  • 自由软件

基本上,我想要的是能够在系统范围内管理软件构建依赖项的任务,但仍然是最低限度的和高效的。我希望有一个精神上的继承者,让开放源码世界的大多数人都能接受。最接近的是什么?

Makepp很接近,我已经用过了。由于某些原因,它没有太大的牵引力,虽然。。。潜在的不利因素:

  • 用perl实现,而不是用系统编程语言实现,那么对它感兴趣的开发人员就更少了
  • 不在apt,所以很难认真对待
  • 从Make继承语法;并没有真正执行一种正确的做事方式
  • 缓慢构建
  • 子目录不从父目录继承信息

    • Makepp很接近,我已经用过了。由于某些原因,它没有太大的牵引力,虽然。。。潜在的不利因素:

      • 用perl实现,而不是用系统编程语言实现,那么对它感兴趣的开发人员就更少了
      • 不在apt,所以很难认真对待
      • 从Make继承语法;并没有真正执行一种正确的做事方式
      • 缓慢构建
      • 子目录不从父目录继承信息

      忍者基础设施看起来很有趣。它不是一个独立的构建系统,但它可能会促使某人编写一个非常优雅的前端。也许CMake支持它作为后端将加速它的采用


      忍者基础设施看起来很有趣。它不是一个独立的构建系统,但它可能会促使某人编写一个非常优雅的前端。也许CMake支持它作为后端将加速它的采用


      塔普看起来很有趣

      和djb重做:

      然后摇动:


      塔普看起来很有趣

      和djb重做:

      然后摇动:


      我读了更多的内容,看起来tup和redo都在某个根级别建立了数据库。哦,但是哇,tup dev实际上有一个玩具linux发行版,它将所有内容作为git子模块导入,并使用tup构建所有内容!我读了更多,看起来tup和redo都在根级别建立了数据库。哦,但是哇,tup开发人员实际上有一个玩具linux发行版,它将所有内容作为git子模块导入,并使用tup构建所有内容!根据术语的含义,您可能不希望使用递归系统。有关此主题的有趣阅读,请参阅,另请参阅另一个StackOverflow问题:。看看fab。它满足其中几个要求,具体取决于您的意思。值得注意的是,它具有良好的“可嵌套性”,并集成了依赖项发现,尽管目前仅适用于少数语言(但发现功能是可扩展的),但您可能不希望使用递归系统,这取决于您所指的术语。有关此主题的有趣阅读,请参阅,另请参阅另一个StackOverflow问题:。看看fab。它满足其中几个要求,具体取决于您的意思。值得注意的是,它很好地实现了“可嵌套”,并集成了依赖项发现,尽管目前仅适用于少数语言(但发现功能是可扩展的)