我有一个分层构建,使用SConscript递归地声明构建目标;所以我事先并不知道目标。每个构建都会生成一些额外的文件,如* .err * .out,这些文件不在目标中。当我运行scons -c时,这些文件将保持未清除状态。
当我运行scons -c时,有没有办法清理这些文件?
答案 0 :(得分:1)
执行此操作的一种方法是创建自己的构建器,然后修改emitter()函数以包含那些可能的额外目标。
在我自己的progject中,我围绕SWIG工具创建了自己的构建器,因为在执行时,我将生成的.py文件保存在与generate .cpp文件不同的目录中。所以默认的scons -c不会清理额外的.py文件。
所以对于你的情况,你会做这样的事情:
def emitter(target, source, env):
# based on the target, create File nodes for the files that will
# get generated as a side effect.
target.append('%s.err' % target[0])
target.append('%s.out' % target[0])
return target, source
此处指向我的SWIG构建工具的链接:SwigGen.py
这会向环境对象添加一个新构建器,以便我可以这样做:
env.SwigGen('module_wrapper.cpp', 'module.i')
当我做一个scons -c时,创建的额外'module.py'也会被清理。