我正在使用 SCONS 构建工具。
我无法使用在 python 脚本中初始化的环境变量。
在我的项目中,用户可以更改一些变量以与编译器一起使用。
为此,我们有 2 个文件。
Config.py 具有所有变量,例如包含目录、 CFLAGS 、 CPPDEFINES 等。因此,在这里我们可以设置一些变量。我需要在 Sconstruct 文件中使用这些变量。在 config.py 中我设置了一个变量,如下所示
SCONS_INC = "Include files"
os.environ["SCONS_INC"] = SCONS_INC
Run Code Online (Sandbox Code Playgroud)
我需要在 Sconstruct 文件中使用这些变量。代码是
env["CPPPATH"] = os.environ["SCONS_INC"]
Run Code Online (Sandbox Code Playgroud)
但我收到类似未定义变量 SCONS_INC 的错误。
这个怎么做?
SCons 默认情况下不使用调用的环境,这是为了确保无论您的环境具有哪种配置,您都可以重现构建。
环境变量存储在 scons 环境中的 key 下,ENV因此您可以像这样访问常规环境变量:
env = Environment()
variable = env['ENV']['SomeVariable']
env['ENV']['SomeVariable'] = SomeValue
Run Code Online (Sandbox Code Playgroud)
我理解你的问题,就像你需要使用 SCons 中的 python 脚本中设置的变量一样。为此,您需要结合使用您描述的两种方法来传输它们。
env = Enviroment()
python_variable = os.environ['SomeVariable']
env['ENV']['SomeVariable'] = python_variable
Run Code Online (Sandbox Code Playgroud)
不过,我可能会推荐其他控制构建的方法,这样您就不必经历传输环境变量的麻烦。恕我直言,使用参数更简单。参数只是一个由 scons 调用生成的字典,所以当你说:
scons -D some_argument=blob
Run Code Online (Sandbox Code Playgroud)
你可以简单地通过以下方式得到这个论点:
some_variable = ARGUMENTS["some_argument"]
Run Code Online (Sandbox Code Playgroud)
当然,我不知道你为什么需要环境变量,所以这可能与你完全无关。
| 归档时间: |
|
| 查看次数: |
6456 次 |
| 最近记录: |