gpt4 book ai didi

scons - 覆盖 SCons 构建器

转载 作者:行者123 更新时间:2023-12-04 23:20:21 27 4
gpt4 key购买 nike

我想对所有 .o 做一些后期处理文件(例如由 ObjectStaticObject Builders 生成的文件),无论用户使用什么 Builder。

我试图像这样“覆盖”或“ Hook ”基础环境的构建器,但我想不出任何有效的方法:

old = env['BUILDERS']['StaticObject']
env['BUILDERS']['StaticObject'] = something_that_calls(old)

是否有规定的方法可以钩住或覆盖类似 StaticObject 的内容? build 者?

我看过关于 Nested SCons Builder 的问题,但它没有告诉我如何替换现有的构建器,只是补充了它的行为。

最佳答案

我不知道是否有一种幸运的方式来替换 Builder,但我认为您走在正确的轨道上。以下(无可否认的微不足道)示例对我有用:

def wrap_builder(bld):    
return Builder(action = [bld.action, 'echo $TARGET'],
suffix = bld.suffix,
src_suffix = bld.src_suffix)

obj_bld = env['BUILDERS']['Object']
env['BUILDERS']['Object'] = wrap_builder(obj_bld)

env.Program('test', ['test.c'])

带输出:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o test.o -c -std=c99 test.c
echo test.o
test.o
gcc -o test test.o
scons: done building targets.

如您所见,附加(回显)操作是在构建目标文件后执行的。

关于scons - 覆盖 SCons 构建器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28908712/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com