我在SCons中创建了一个特殊构建器,用于从需求文件创建Python中的virtualenv。如果给定一个标志--virtualenv
,我想设置一个名为HOSTPYTHON
的环境变量,它改变了scons用于构建和测试我其余代码的Python。在SCons中首先运行构建
这意味着我需要virtualenv构建器始终首先运行并在所有其他构建器之前运行。我怎样才能做到这一点?
我在SCons中创建了一个特殊构建器,用于从需求文件创建Python中的virtualenv。如果给定一个标志--virtualenv
,我想设置一个名为HOSTPYTHON
的环境变量,它改变了scons用于构建和测试我其余代码的Python。在SCons中首先运行构建
这意味着我需要virtualenv构建器始终首先运行并在所有其他构建器之前运行。我怎样才能做到这一点?
而不是将virtualenv
定义为构建器,您可以考虑将其作为一个简单的Python函数,并使用SCons Execute()函数运行它。执行将始终在任何构建者之前执行。
我不知道如何更改构建中的SCons使用的Python版本,因此您可能需要运行SCons两次。第一次,请检查--virtualenv
命令行参数,如果存在调用Execute()
(或始终调用Execute()并在内部检查cmd行),然后Exit()
。
无论需求文件是否更改,这将运行构建器,这将花费大量时间。 –
这显然是可能的,因为你可以手动取得所有的目标,并取决于这个构建。问题是,是否有一种方便的方式来做到这一点。 –
@AirirRachum,我不明白它取决于需求文件。如果是这样,那么你是对的。我问OP了。 – Brady
仅当在命令行上给出--virtualenv时是否要更改HOSTPYTHON标志,还是应该依赖于需求文件是否已更改? – Brady
只有在给出'--virtualenv'的情况下。但没关系,我拿到了这部分,我只是在这里列出来澄清我的意图。重要的一点是让构建先运行。 –
该标志仅指出其余构建是否使用此环境,但如果需求文件发生更改(无论此标志如何),则应构建该标志。 –