【问题标题】:Python make systemsPython 制作系统
【发布时间】:2010-07-20 20:09:46
【问题描述】:

各种 Python make-like 系统有什么好处和问题?

note 我们在列表项的开头分别使用符号“(+)”和“(-)”指出好处和问题。

目前我知道

  • buildit
    • 以前称为pymake
    • (-) 似乎已经过时:最后一次发布是在 2007 年底
  • zc.buildout
    • (+) 目前活跃于 2010 年 7 月 20 日
    • 使用带有[sections] 的类rc 文件语法
    • (-) python 代码不能(?)容易地集成到配置文件中。
    • 似乎非常重视使用.egg 文件。
  • scons
    • (+) 目前活跃于 2010 年 7 月 20 日
    • 配置文件是用纯 Python 编写的
    • (+) python 代码可以很容易地集成到配置文件中
    • (-)?将 Python 用于配置文件可能需要额外的冗长
  • waf
    • (+)? Mark 说“与scons 一样的好处,但速度更快”
    • 有什么缺点吗?为什么人们还在使用scons

【问题讨论】:

  • “额外冗长”?它肯定看起来比任何替代方案都更清晰、更精确。这个问题的意义何在?
  • 也许是关于 python make 工具信息的存储库(至少考虑到 CW 状态,这是我的假设)
  • 我只是对现有的选项进行了一些快速研究,并提出了这个列表。我想知道 a) 是否有更多选项,b) 此处列出的选项是否还有其他值得注意的方面。
  • @S.Lott:您是说在列出的选项中更喜欢scons 使用的文件格式? builditzc.buildout 使用的文件格式有哪些不精确或不清楚的地方?据我所知,这些包的文件格式更适合他们的任务;因此,我希望它们比 scons' 完整的 Python 格式更简洁,但功能更弱。
  • @intuited:“我希望”。听起来像是价值判断,而不是问题或事实。

标签: python makefile


【解决方案1】:

waf 的一个怪癖是它应该被复制到程序的源代码树中。 Scons 很像 make,它在系统上安装一次,然后在源代码树中基本上只有一个数据文件(以 python 程序的形式)。

因此,Scons 是在 Ubuntu/Debian 上打包的,而 waf 不是。

在 Scons 中可以进行元编程来操作依赖图或添加新的派生概念,但有点困难。显然 waf 在这方面做得更好。

我已经多次愉快地使用 Scons 了;对于我的下一个编译项目,我可能至少会尝试 waf。

您可以阅读有关Samba's experience with waf 的信息。他们报告说,从 autoconf 到 Waf 可以正确设置 rpath,并通过每个程序只链接一次必要的目标文件来缩小二进制文件。

【讨论】:

    【解决方案2】:

    这里是 Python 3 的 4 个软件构建系统的状态,截至 2015 年 5 月 31 日。

    【讨论】:

      【解决方案3】:

      大约 1.5-2 年前,当我使用 waf 时,它的文档非常稀少而且很差,这极大地限制了它的实用性。不过,我已经有一段时间没有使用 waf 了,所以这种情况可能已经改变了。

      【讨论】:

      • 应该是评论,肯定不是答案。
      猜你喜欢
      • 1970-01-01
      • 2015-01-12
      • 2014-01-23
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      • 2020-02-06
      相关资源
      最近更新 更多