如何将验证逻辑作为对 SCONS 目标的依赖

问题描述

我对 SCONS 上的构建过程有一个简单但不明显的要求。

我需要输入以下命令:

scons release [version]

预期结果

这应该做的是:

  1. 激活名为 release 的目标。
  2. 捕获在发布参数之后不久传递的参数。
  3. 作为目标的一部分,执行一个函数。如果发布 targed 后传递的参数有效,则调用一个 targed。
  4. 如果无效,则中断工作流程并显示错误消息。

问题

我不知道如何设置

我目前的假设是:

  1. 使用两个操作创建自定义构建器。
  2. 一个动作应该是一个 Python 函数,如果它的逻辑如此决定,它可以以某种方式停止进程。
  3. 第二个操作应该是调用认构建器,因为如果第一个操作决定可以继续,则应该执行认构建器。
  4. 创建一个指向这个名为 release 的自定义构建器的目标。

我需要做的是创建一个工作流,其中一些逻辑作为目标的一部分执行,并决定是否应该执行另一个逻辑。

但我不知道我的想法是否可行,而且我错过了一些我不知道从哪里获得的知识:

  1. “发布”目标不是输入文件。相反,它是执行由不同操作组成的工作流的触发器。我如何告诉 SCONS“release”参数不是文件
  2. 如何捕获在“release”参数之后输入的下一个参数?这是发布号,“发布”目标应使用它来验证内容。 Pseldocode 将是:
def releaseTarget(wantedRelease):
  if wantedTarget == "":
    interruptHere()
  1. 如何中断工作流程,以防止执行下一个操作?
  2. 如何将认操作链接为工作流中的下一个操作?

我想知道我应该从哪里开始在 scons 上寻找这种功能

解决方法

SCons 的方法是使用变量。这将导致调用为:

scons release VERSION=1.2.3

变量包含在 SCons 文档 here 中:

对于 release,您将使用 Alias 文档 here

如果您打算使用 SCons 做一些无关紧要的事情,则可能值得仔细阅读用户指南和联机帮助页。

另外,请加入我们的 Discord 服务器以寻求帮助,或加入用户邮件列表,或 IRC 频道详情here