SCons手动构建步骤

时间:2011-08-18 00:02:55

标签: scons

是否有可能让SCons提醒我使用它的依赖性跟踪执行手动步骤?

我的构建使用.fla的.swc输出,使用命令行无法做到。

我尝试过类似的事情:

env.Command(target, sources + SHARED_SOURCES,
            Action(lambda target, source, env: 1, "Out of date: $TARGET"))

但是使用这种方法,我必须使用Decider('make')或者得到:

$ scons --debug=explain
scons: rebuilding `view_bin\RoleplaySkin.swc' because `view_src\RoleplaySkin.fla' changed
Out of date: view_bin\RoleplaySkin.swc
scons: *** [view_bin\RoleplaySkin.swc] Error 1

而且,更重要的是,SCons从未意识到它的缓存是过时的,所以环境或源代码的任何变化,因为它在.sconsign.dblite中写入签名意味着它将始终尝试重建(因此,总是失败)

2 个答案:

答案 0 :(得分:0)

在将* .swc输出转换为* .fla之前使用Precious方法保护* .swc输出怎么样?

答案 1 :(得分:0)

如何创建自己的RemindMe构建器,它会提醒您并且无法构建目标?

它看起来像这样:

def remind_me(target, source, env):
  os.remove(target.abspath) #we do not build, we destroy
  print ("This is a friendly reminder, your $SOURCE is out of date, run manual build step")
  return None

reminder = Builder(action = remind_me,
                   suffix = '.swc',
                   src_suffix = '.fla')
env = Environment(BUILDERS = {'RemindMe' : reminder})

#Run builder like this   
swc_file = env.RemindMe('some_fla_file')
final_target = env.BuildWithSWC(some_other_target,swc_file)

然而,这只是一个理论,我从未尝试过实际删除目标而不是创建目标。至少可能值得一试。