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

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时间   java以适当的方式更新jLabel和jTextField   java如何从PQ(单链表)中删除最大值   java可以通过任何方式找出哪些NSF文件属于Domino服务器   java Velocity 2不会设置属性   如何使用java流迭代索引映射列表   maven依赖项在编译期间工作,但在java运行时失败。lang.NoClassDefFoundError&java。lang.ClassNotFoundException   java有没有办法完全隐藏Web应用程序代码?   Android appcompat v7 21库中的java FadingActionBar错误   Eclipse/com中的java AdMob。谷歌。安卓gms。ads.AdView   java My Service表示它正在运行,但其状态尚不清楚,似乎没有绑定   java无法启动Apache Tomcat Web应用程序容器   JDK:java中的命名约定。可丢弃的   Spring SerSecurity中的java身份验证错误   Maven:使用JDK8编译Java7   java在使用ExecutorService时如何管理内存?   comm.jar通信串行端口java   java LibGDX创建动画