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

Add extra targets to buildin builders

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

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

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

什么是合适的方式?

如果您知道文件的名称,那么您将其列为 side effect and set it to be cleaned

myenv.Append(LINKFLAGS=...)
lib = myenv.SharedLibrary(source)
map = SideEffect('file.map', lib)
Clean(lib, map)

好的,我找到了方法。 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'].

中找到所有已加载的构建器