我需要链接器中的一些额外文件(p.ex。内存映射),因此我相应地修改了标志:myenv.Append(LINKFLAGS=...)
如何使用.map
清除这些额外的scons -c
文件?
我知道有Emitters
来添加目标。是否可以扩展myenv
的构建构建器?
什么是合适的方式?
答案 0 :(得分:1)
好的,我找到了办法。 Scons提供变量PROGEMITTER
,记录为' TODO'。
def prog_emitter(target, source, env):
# assume target is a list!
# exchange extension of target file with .map
target.append(os.path.splitext(target[0].get_path())[0] + '.map')
return target, source
myenv.Append(PROGEMITTER=prog_emitter)
对于其他构建者,您可以使用add_emitter
。您将在myenv['BUILDERS']
中找到所有已加载的构建器。
答案 1 :(得分:0)
如果你知道该文件的名称是什么,那么你将其列为side effect并将其设置为cleaned。
myenv.Append(LINKFLAGS=...)
lib = myenv.SharedLibrary(source)
map = SideEffect('file.map', lib)
Clean(lib, map)