更好的构建工具。自动查找任何语言的依赖项。

fabricate的Python项目详细描述


Build Status

manufacture是自动查找依赖项的生成工具 任何语言。它很小而且很管用。在你的背后没有隐藏的东西 回来。它的灵感来源于Bill McCloskey的make replacement,memoize,但是 制造工程 Windows 以及Linux。

Get fabricate.py now, 学习how it works,请参见 如何获得in-Python help,或讨论 在mailing list上。

功能

  • 不必列出依赖项。
  • 不必指定清理规则。
  • 该工具是一个python文件。
  • 它使用md5(不是时间戳)来检查输入和输出。
  • 你可以在10分钟内学会这一切。
  • 三个月后你仍然可以阅读你的构建脚本。
  • 现在支持parallel building

给我举个例子!

fromfabricateimport*sources=['program','util']defbuild():compile()link()defcompile():forsourceinsources:run('gcc','-c',source+'.c')deflink():objects=[s+'.o'forsinsources]run('gcc','-o','program',objects)defclean():autoclean()main()

这不是您可以用manufacture生成的最简单的构建脚本(请参见 other examples, 但它与我们使用的一些更复杂的脚本非常接近 在现实生活中。注意事项:

  • 这是一个普通的python文件。使用 Python。
  • 没有像ccflags这样的隐式内容。
  • explicit更好:告诉famble要运行哪些命令,以及 它运行它们——但前提是它们的输入或输出发生了变化。
  • 在make中使用targets时,只需使用python函数- build()是默认值。
  • 您可以轻松地“自动清理”任何生成输出–生成查找 自动生成输出,就像它查找依赖项一样。

使用“制作”选项

开始的最佳方法是使用上面链接的一个示例 并修改它以适合您的项目。但你一定要用一些 制造中内置的选项。要获取这些内容的列表:

from fabricate import *

help(main)
help(Builder)

使用“制作”作为脚本,创建备忘录

您还可以使用manufacture.py作为脚本,并直接在 命令行(请参见command line options)。 在下面,每个gcc命令只有在 依赖关系已更改:

fabricate.py gcc -c program.c
fabricate.py gcc -c util.c
fabricate.py gcc -o program program.o util.o

为什么不使用make?

首先,如果使用 空格而不是制表符。你不需要输入依赖项 手动操作,如下所示:

files.o : files.c defs.h buffer.h command.h
        cc -c files.c

相反,你只要告诉family run('cc', 'file.c'),它就会 找出该命令的输入和输出是什么。下次你 生成时,该命令将仅在其输入已更改或 它的输出已被修改或不存在。

您可以使用python可读的字符串函数,而不是生成 只编写make规则,就像make docs中的这个规则:

%.d : %.c
        @set -e; rm -f $@; $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
        sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; rm -f $@.$$$$

烤饼呢?

斯科恩斯一开始也诱惑了我们。是Python…不是吗?但就在之前 它吸引你,你意识到其实做简单的事情是quite hard 事情很明显。

python说explicit比implicit好,这是有原因的,而且 凭着捏造,我们成功了,所以你告诉它你想要什么。不会的 你背后的东西基于83 different tools它可能 可能不知道。

学分

捏造的灵感来自Bill McCloskey’s memoize,但是 也可以使用文件访问时间来制作windows下的作品 如果文件系统上没有strace,则返回strace。阅读更多 关于how fabricate works.

制造最初是由b hoyts在Brush Technology开发的内部使用,然后我们 释放到野外。它现在有一个小型但专用的用户群 正在西蒙·阿尔福德的帮助下积极维护和改进 来自其他伪造用户。

许可证

像memoize一样,failure是在New BSD license下发布的。 Manufacture版权所有(c)2009 Brush Technology。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从ImageIO中排除特定的TIFF读取器?   JavaJMockit和passbyreference。我们中一定有一个人错了(可能是我!)   java Android camera2放弃了牛轧糖的表面,但在棉花糖上工作   java按字符串中出现的顺序对字符数组进行排序   如何获取Groovy生成的java源代码   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java为什么我的冒泡排序代码会打印出这些奇怪的东西?   java JAXB:typesafeEnumMemberName=“generateName”是否可自定义?   Java编程输入:今天是星期天输出:星期天是今天   java不理解首个OOAD书的吉他示例   java如何从JformattedTextfield检索货币格式值   java可以从相同的源代码生成功能不同的可执行文件吗?