scons - SCons 可以用于从不确定命名的源文件构造目标吗?
问题描述
我有一个目录,其中包含多个名称不确定的源文件。我唯一知道的是文件扩展名。我想获取每个源文件,并从每个源文件构建一个目标。我目前使用的方法是使用 for 循环确定每个源的名称:
targets = []
for file in listdir('.'):
if file.endswith('.xdm'):
targets += env.m4(source=file)
像这样以编程方式执行此操作的优点是开发人员在添加新源时不必维护 SConscript。问题是目标不再被清理,因为与我不完全理解的依赖关系有关。
所以我的问题是有没有更合适的方法来做到这一点,使用内置的SCons功能,而不依赖于更传统的流控制,或者我应该确保我的每个来源都是确定的,并在 SConscript 中单独列出它们?
解决方案
而不是摆弄listdir
我会简单地使用SCons本身Glob()
提供的方法:
for file in Glob("*.xdm"):
env.m4(source=file)
这(就像您问题中的示例一样)是一种非常好的方法,因为它使用了SConscripts实际上是Python脚本的事实。该Glob()
方法的优点是还可以找到*.xdm
硬盘上尚不存在的文件,但可能会在以后作为构建过程的一部分创建。
我想知道你提到的关于目标清洁的问题。您上面问题中链接的问答似乎与我无关。如果您在使用上述方法之一时遇到实际的“清理”问题,请发布一个单独的问题以及完整的逐字输入和输出。如果事实证明这不能开箱即用,我认为这是一个错误。
推荐阅读
- java - 获取按钮以更改标签文本的问题 [已解决]
- iframe - 我如何编写脚本来强制 iFrame 在文档加载时加载,而不是为我的 squarespace 站点加载窗口?
- python - 字谜游戏的娱乐
- r - 合并两个数据框而不增加行数
- github - 将 Nuts 服务器设置为从 Private Github Repo 自动更新
- javascript - Formstack 嵌入:WordPress 的 HTML 与 JS 问题
- html - 有没有办法使用 CSS 更改 RadioBox 颜色?
- linux - 在 jenkins 中使用 bitbucket 和 docker 设置 .net 核心管道
- typescript - 未给定值时如何使 TS 泛型参数可选
- python - 为什么代码运行如此缓慢,以至于我在其中使用了 for 循环。有更快的方法吗?