向构建构建器添加额外的目标
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']
.
中找到所有已加载的构建器
我需要来自链接器的一些额外文件(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']
.