我想写一个SConstruct文件,将目录中的所有JPEG文件转换成PNGs。在
我想我的建筑商很好:
ConvToPNG = Builder(action = 'convert $SOURCE $TARGET',
suffix = '.png',
src_suffix = '.jpg')
env['BUILDERS']['ConvToPNG'] = ConvToPNG
但我不知道如何列出所有需要建立的目标。我可以用Python-y这样做:
^{pr2}$然后也许我会用一个别名:
env.Alias('convert_all', pix_conversions)
或者手工制作一个节点,并在转换中使用Depends
。在
问题是,这看起来像是扫描仪制造的。但我没能让它正常工作。我试着做一个构建器,它可以在目录上工作,并调用一个扫描程序来添加一堆目标,但是没有成功,因为SCons内部要求构建器在文件上运行。(或者至少,这是我从错误消息中收集到的)。在
有没有更多的方式来做这件事?在
扫描仪用于隐式依赖项。在
例如,您想构建},则{a1}将基于显式依赖
foo
,它依赖于foo.c
,后者执行bar.c
的#include
。因此,当您告诉scon使用依赖项foo.c
构建{foo.c
自动获取隐式依赖bar.c
。在您的步骤似乎很好,但别名节点需要传递给AlwaysBuild函数:
所以最终的结果是:
^{pr2}$不用扫描仪也能正常工作。SCons将检查您的JPEG文件的MD5哈希,如果某些文件在上次转换后发生了更改,则builder将再次启动。在
相关问题 更多 >
编程相关推荐