【问题标题】:Can SCons be used to construct targets from indeterminately named source files?SCons 可以用于从不确定命名的源文件构造目标吗?
【发布时间】:2019-03-04 18:54:11
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: scons


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢您,dirk,您的解决方案运行良好。如果我有时间,我稍后会再看一下listdir方法,如果我无法弄清楚 --clean 失败的原因,我会发布一个后续问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    相关资源
    最近更新 更多