SCons 能否用于从不确定命名的源文件构建目标?

Can SCons be used to construct targets from indeterminately named source files?

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

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

像这样以编程方式执行此操作的优势在于,开发人员在添加新源时不必维护 SConscript。问题是由于 something to do with dependencies 我不完全理解,目标不再被清理。

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

我不想摆弄 listdir,而是简单地使用 Glob() 方法,正如 SCons 本身提供的那样:

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

这(就像你问题中的例子)是一个非常好的方法,因为它使用了 SConscripts 实际上是 Python 脚本。 Glob() 方法的优点是还可以找到 *.xdm 硬盘驱动器上尚不存在的文件,但稍后可能会在构建过程中创建这些文件。

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