我有一个目录,其中包含多个不确定名称的源文件。我唯一知道的是文件扩展名。我想获取每个源文件,并从每个源文件构建一个目标。我当前使用的方法是使用for循环来确定每个源的名称:
targets = []
for file in listdir('.'):
if file.endswith('.xdm'):
targets += env.m4(source=file)
以这种方式进行编程的好处是,开发人员在添加新资源时不必维护SConscript。问题在于由于我不完全了解的something to do with dependencies,不再清理目标。
所以我的问题是,使用内置的 SCons 功能是否有更合适的方法,而不必依赖于更传统的流控制,还是应该确保每个源都确定并在SConscript中单独列出它们?
答案 0 :(得分:2)
我不用摆弄listdir
而是使用Glob()
方法,这是 SCons 本身提供的:
for file in Glob("*.xdm"):
env.m4(source=file)
这(就像您问题中的示例一样)是一种非常好的方法,因为它使用了 SConscripts 实际上是 Python 脚本的事实。 Glob()
方法的优点是还可以找到硬盘上尚不存在的*.xdm
文件,但是稍后可能会在构建过程中创建这些文件。
我想知道您提到的有关清洁目标的问题。上面您的问题中链接的问答与我无关。如果您在使用上述方法之一时遇到实际的“清理”问题,请发布一个单独的问题以及完整的逐字输入和输出。如果应该立即解决这个问题,我认为这是一个错误。