SCons忽略功能不起作用

时间:2016-04-04 09:53:29

标签: scons

我在编译每个文件后生成了一些日志文件。

我通过使用附加到我正用于编译该文件的构建器的发射器来让SCons知道这些文件。

不幸的是,因为我在每次构建后删除空的日志文件SCons重新编译源文件,因为缺少日志文件。

我想使用SCons Ignore函数忽略这些“副作用”文件。

在我的发射器中,我正在做这样的事情:

def compiler_emitter(target, source, env):
target.append(env.File(source[0].name.split('.')[0] + env['ERRSUFFIX']))    
env.Ignore(source[0], target[1])    
return target, source

作为一个注释,我总是只将一个文件传递给我的构建器。

在我的情况下,忽略功能不起作用。

以“SCons方式”解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

尝试使用env.SideEffect()而不是忽略:

  

SideEffect(side_effect,target),env.SideEffect(side_effect,target)

     

将side_effect声明为构建目标的副作用。都   side_effect和target可以是列表,文件名或节点。在旁边   effect是作为副作用创建或更新的目标文件   建立其他目标。例如,Windows PDB文件创建为   为静态库构建.obj文件的副作用,以及   创建各种日志文件作为各种TeX的副作用更新   命令。如果目标是多个构建命令的副作用,   scons将确保一次只执行一组命令。   因此,您只需将此方法用于副作用目标   这是由多个构建命令构建的。

     

因为多个构建命令可能会更新相同的副作用文件,   默认情况下,side_effect目标不会自动删除   目标由-c选项删除。 (但请注意,   side_effect可能会在清理目录时删除   它存在。)如果你想确保side_effect被清理   无论何时清理特定目标,都必须指定此目标   明确使用Clean或env.Clean函数。

http://scons.org/doc/production/HTML/scons-man.html