为构建构建器添加额外的目标

时间:2015-06-10 09:54:38

标签: scons

我需要链接器中的一些额外文件(p.ex。内存映射),因此我相应地修改了标志:myenv.Append(LINKFLAGS=...)

如何使用.map清除这些额外的scons -c文件?

我知道有Emitters来添加目标。是否可以扩展myenv的构建构建器?

什么是合适的方式?

2 个答案:

答案 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)