SCons转换目录中的所有图像

2024-06-13 14:14:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个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内部要求构建器在文件上运行。(或者至少,这是我从错误消息中收集到的)。在

有没有更多的方式来做这件事?在


Tags: 文件目录envsourceconverttarget目标builder
2条回答

扫描仪用于隐式依赖项。在

例如,您想构建foo,它依赖于foo.c,后者执行bar.c#include。因此,当您告诉scon使用依赖项foo.c构建{},则{a1}将基于显式依赖foo.c自动获取隐式依赖bar.c。在

您的步骤似乎很好,但别名节点需要传递给AlwaysBuild函数:

env.AlwaysBuild(env.Alias('convert_all', pix_conversions))

所以最终的结果是:

^{pr2}$

不用扫描仪也能正常工作。SCons将检查您的JPEG文件的MD5哈希,如果某些文件在上次转换后发生了更改,则builder将再次启动。在

相关问题 更多 >