【问题标题】:append value to environment variable on builder call在构建器调用时将值附加到环境变量
【发布时间】:2012-04-28 17:17:40
【问题描述】:

问题如下: 我有一个环境,其中一些变量定义如下:

env = Environment(CPPPATH=['#/include'])

在某些情况下,我需要调用具有一些额外值的构建器,这些值不应永久添加到环境中,以免造成不必要的污染。

一种方法是通过将额外值与环境值合并来将额外值附加到构建器调用。

env.Object('test.c', CPPPATH=['#/some_other_include_path']+env['CPPPATH'])

有更优雅的方法吗?

【问题讨论】:

    标签: scons


    【解决方案1】:

    我通过克隆 env 并附加到它来做到这一点,如下所示:

    clonedEnv = env.Clone()
    clonedEnv.Append(CPPPATH=['#anotherPath'])
    clonedEnv.Object('test.c')
    

    一个更pythonic(和高效)的方式来做你正在做的事情是使用python list.extend() 函数:

    cpppath = ['path1', 'path2']
    cpppath.extend(env['CPPPATH'])
    env.Object('test.c', CPPPATH = cpppath)
    

    【讨论】:

    • 谢谢!我认为这两种方法都比我的方法好!另外,可以使用第一个,例如在 SConscript 中修改多个构建器调用。
    猜你喜欢
    • 2021-03-05
    • 2020-04-20
    • 2019-07-02
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    相关资源
    最近更新 更多