如何在 scons 中每次构建后运行一些代码?

2023-11-29

我正在寻找一种方法来注册诸如 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 会话中运行多个“构建”命令时。

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

Thanks!


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

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 )。希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 scons 中每次构建后运行一些代码? 的相关文章

随机推荐

  • 可以使用 AutoMapper 将一个对象映射到对象列表吗?

    这些是我的课程 public class EventLog public string SystemId get set public string UserId get set public List
  • NHibernate 中的表达式树

    我有一个具有此签名的方法 public static IList
  • 在活动之间保留 Google Play 服务登录

    我认为这很简单 但我一直在兜圈子 试图找出如何让用户保持登录状态Activities 我有一个 主要 和一个 详细信息 Activity 用户登录Google Play Services在 主要 Activity我想在 详细信息 中提交成就
  • 所有视图模型都继承自“BaseViewModel”,我可以在 OnActionExecuting 中设置它吗?

    如果我的所有操作都有一个继承自 BaseViewModel 的模型 是否可以从 OnActionExecuting 方法初始化该模型 目前 在我的所有行动中 我都是这样做的 var model new SomeModel model Use
  • c# WinForms 可以获得 NumericUpDown 文本区域

    是否可以获取 NumericUpDown 控件的文本区域 我正在寻找它的尺寸 以便我可以用面板遮盖它 我不希望用户能够编辑并选择文本 这可能吗 或者还有其他方法可以覆盖文本框中的文本吗 Thanks 您可以通过使用 Label 控件而不是内
  • WinUI 3 打包应用程序未在 AppData 中创建文件夹

    在 WinUI 3 打包应用程序中 我尝试在中创建一个文件夹AppData Local MyApp 在我的应用程序启动中 我正在执行以下操作 public App string apf Environment GetFolderPath E
  • TYPO3 TCA在后端对象保存后执行挂钩

    如果通过后端保存对象 我想操作一些值并执行自定义函数 我通过谷歌搜索发现我必须在我的ext localconfphp GLOBALS TYPO3 CONF VARS SC OPTIONS t3lib class t3lib tcemain
  • fget 是如何工作的?

    我在用海湾合作委员会 Ubuntu 4 8 2 19ubuntu1 4 8 2我正在编写一个非常简单的脚本 以字符串作为输入并使用一些自定义消息打印相同的内容 首先用户输入 T 获取字符串的次数 然后通过以下方式获取输入fgets 我用了t
  • 如何从 Intellij IDEA 部署 tomcat/webapps 文件夹

    我正在通过 Intellij IDEA Tomcat 集成测试 Web 应用程序 基于 Apache Wicket 在那里我注意到 web 应用程序认为它在 tomcat 的 bin 文件夹中运行 另外当我打电话给ServletContex
  • 打开另存为窗口并从单元格填充文件名和文件路径

    我正在尝试打开 另存为 窗口并从单元格填充文件名和文件路径 这是我的代码 它填充文件名并在文件路径中打开 另存为 窗口 但是当我单击 保存 时 文件永远不会显示在应该保存的位置 Sub Save Adds formula to show f
  • 应用内屏幕截图并附加到电子邮件,无需保存到库中

    我想知道如果我想让我的应用程序能够通过按 UI 按钮来截取屏幕截图并立即弹出邮件撰写并通过电子邮件发送屏幕截图而不将其保存到照片库中 我想知道应该使用什么代码 非常感谢 您需要向您的项目添加两个框架 QuartzCore and Messa
  • 从函数返回一个值?

    我正在尝试编写一个函数来分析一些文本和正则表达式模式 例子 import re def foo input pattern text pattern re compile r input patern re I find pattern f
  • 在 php codeigniter 视图中循环

    我得到一个像这样的数组 query data this gt flights gt checkflight form data getting data this gt load gt view payment query sending
  • 从 pandas df 中的列创建二元组

    我在 pandas 数据框中有这个测试表 Leaf category id session id product id 0 111 1 987 3 111 4 987 4 111 1 741 1 222 2 654 2 333 3 321
  • 如何让 Java 检测反向引用,同时尊重字边界?

    我的任务是创建一个正则表达式 用它可以检测多次出现的同一个单词 并将它们全部替换为第一次出现的单词 到目前为止我想出的是 b w b s 1 1 然而 这会检测到例如第二horse in horse horseracing 我只想检测完全匹
  • 如何通过 Java 将二进制数据从 AS3 发送到文件系统?

    我有 AS3 中的 XML 数据 需要对其进行压缩 在我的 Java Google App Engine servlet 上进行验证 然后将其保存到 Google Cloud Storage 中的文件中 稍后该文件将由 AS3 客户端打开并
  • 如何在simulink中创建计数器

    我想计算我的信号变为零的次数 例如 将脉冲信号作为输入 我想要一个变量来计算脉冲变为零的次数 我正在疯狂地思考某事 有人可以帮助我吗 谢谢 figure 1 is a pulse counter model and figure 2 is
  • JFreeChart:自定义 BoxAndWhisker 图表

    我开始使用JFreeChart做一些策划 我希望我的图表如下图所示 我非常接近使用BoxAndWhisker chart 然而 有些事情我仍然想改变 有没有办法去掉盒子 这样我就只有中间线了 如何向条形图添加标签 另外 由于某种原因 y 轴
  • Spring Boot 和自定义 404 错误页面

    在我的 Spring Boot 应用程序中 我尝试配置自定义错误页面 例如 404 我在应用程序配置中添加了以下 Bean Bean public EmbeddedServletContainerCustomizer containerCu
  • 如何在 scons 中每次构建后运行一些代码?

    我正在寻找一种方法来注册诸如 scons 中的最终构建回调之类的东西 例如 我现在正在做这样的事情 def print build summary failures SCons Script GetBuildFailures notifyE