可以使用SCons从名称不确定的源文件中构建目标吗?

时间:2019-03-04 02:41:36

标签: scons

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

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

以这种方式进行编程的好处是,开发人员在添加新资源时不必维护SConscript。问题在于由于我不完全了解的something to do with dependencies,不再清理目标。

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

1 个答案:

答案 0 :(得分:2)

我不用摆弄listdir而是使用Glob()方法,这是 SCons 本身提供的:

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

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

我想知道您提到的有关清洁目标的问题。上面您的问题中链接的问答与我无关。如果您在使用上述方法之一时遇到实际的“清理”问题,请发布一个单独的问题以及完整的逐字输入和输出。如果应该立即解决这个问题,我认为这是一个错误。