如何在使用SCons时添加额外的干净目标

时间:2015-02-02 23:56:06

标签: scons

我有一个分层构建,使用SConscript递归地声明构建目标;所以我事先并不知道目标。每个构建都会生成一些额外的文件,如* .err * .out,这些文件不在目标中。当我运行scons -c时,这些文件将保持未清除状态。

当我运行scons -c时,有没有办法清理这些文件?

1 个答案:

答案 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'也会被清理。