build - 每次构建 scons 后如何运行一些代码?

标签 build scons

我正在寻找一种方法来注册像 scons 中的最终构建回调这样的东西。例如,我现在正在做这样的事情:

def print_build_summary():
    failures = SCons.Script.GetBuildFailures()
    notifyExe = 'notify-send '
    if len(failures) > 0:
        notifyExe = notifyExe + ' --urgency=critical Build Failed'
    else:
        notifyExe = notifyExe + ' --urgency=normal Build Succeed'

    os.system(notifyExe)

atexit.register(print_build_summary)

这仅适用于非交互模式。我希望能够在每次构建结束时弹出这样的东西,特别是在交互式 scons session 中运行多个“构建”命令时。

环顾四周,我发现的唯一建议似乎是使用依赖系统或 AddPostAction调用这个。这样做对我来说似乎不太正确,因为它并不是真正的依赖项(严格来说,它甚至不是构建的一部分)-它只是需要在每次构建结束。

谢谢!

最佳答案

我不认为使用依赖系统来解决这个问题有什么问题。这是我通常的做法:

def finish( target, source, env ):
    raise Exception( 'DO IT' )

finish_command = Command( 'finish', [], finish )
Depends( finish_command, DEFAULT_TARGETS )
Default( finish_command )

这将创建一个命令,该命令取决于执行的默认目标(因此您知道它将始终最后运行 - 请参阅 scons 手册中的 DEFAULT_TARGETS)。希望这可以帮助。

关于build - 每次构建 scons 后如何运行一些代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8901296/

相关文章:

c - SCons - 为库中的所有对象添加依赖项

c++ - Incredibuild 和 cmake

makefile - Scons:运行 make 命令作为目标的依赖项

makefile - 将 scons 构建过程包装在 Makefile 中

debugging - 使看不到带有%标记的规则

caching - SCons 缓存如何与不同的操作系统和 CPU 架构配合使用?

c++ - SCons 无法选择编译器 (MinGW)

c++ - 如何准备在单个 Windows 环境中生成 .dll 和 unix .so 的构建作业?

android - 实现 SeekArc 时构建同步失败

iphone - 在 Xcode 中将build设置重置为默认值?