我有一个 SConscript ,它使用 Cygwin 附带的 m4 和 sed 实用程序构造目标。
总体而言,构建大约需要42秒,才能从8个来源构建16个目标,但是同一构建只需要大约4秒的时间即可完成。对于相当琐碎的构建而言,这是十倍的时差!我知道 SCons 必须通过 Python 解释器运行,因此,它当然不会像 Make 这样的本地可执行文件那样快,但是仍然,我必须假设使用像我这样的基本构建,我必须做一些非常愚蠢的事情才能看到如此巨大的时差。有什么想法或建议吗?
根据评论中的一些建议,我用内置的 SCons 替换了自定义的 m4 生成器,并且摆脱了 sed 完全是为了减少潜在原因的数量,现在总构建时间已降至22秒。现在,您可以在下面看到我代码的 int :
SConstruct :
env = DefaultEnvironment(tools=['m4'])
env['ENV']['PATH'] = ['C:/cygwin/bin']
SConscript('sources/SConscript', exports = 'env', variant_dir='build', duplicate = 0,)
sources \ SConscript :
from ntpath import basename # Gets a file's basename from it's pathname.
Import('env')
M4FLAGS = '-DVV_SUBDERIVATIVE_NAME=5777C -DM4_USER_MODE_CONFIGURATION=true'
for file in Glob("*.xdm"):
env.M4(target=basename(str(file))+'.orig', source=file, M4FLAGS=M4FLAGS)