首页 > 解决方案 > SCons 可以用于从不确定命名的源文件构造目标吗?

问题描述

我有一个目录,其中包含多个名称不确定的源文件。我唯一知道的是文件扩展名。我想获取每个源文件,并从每个源文件构建一个目标。我目前使用的方法是使用 for 循环确定每个源的名称:

targets = []
for file in listdir('.'):
    if file.endswith('.xdm'): 
        targets += env.m4(source=file)

像这样以编程方式执行此操作的优点是开发人员在添加新源时不必维护 SConscript。问题是目标不再被清理,因为与我不完全理解的依赖关系有关。

所以我的问题是有没有更合适的方法来做到这一点,使用内置的SCons功能,而不依赖于更传统的流控制,或者我应该确保我的每个来源都是确定的,并在 SConscript 中单独列出它们?

标签: scons

解决方案


而不是摆弄listdir我会简单地使用SCons本身Glob()提供的方法:

for file in Glob("*.xdm"):
    env.m4(source=file)

这(就像您问题中的示例一样)是一种非常好的方法,因为它使用了SConscripts实际上是Python脚本的事实。该Glob()方法的优点是还可以找到*.xdm硬盘上尚不存在的文件,但可能会在以后作为构建过程的一部分创建。

我想知道你提到的关于目标清洁的问题。您上面问题中链接的问答似乎与我无关。如果您在使用上述方法之一时遇到实际的“清理”问题,请发布一个单独的问题以及完整的逐字输入和输出。如果事实证明这不能开箱即用,我认为这是一个错误。


推荐阅读