在SCons中创建混合(值集)CPPDEFINES

时间:2011-09-20 23:52:49

标签: python scons

我想将编译器定义设置为 -DBLUB 以及 -DFOO = 1

目前我只有:

env.Append("CPPDEFINES", ["BLUB", "VALUE2"])

我现在想通过“FOO”包含第三个定义:1 因此使用 CPPDEFINES 作为字典,以便稍后我可以很容易地进行测试

env["CPPDEFINES"].get("FOO") == 1

左右。我尝试的一切都会导致语法错误或奇怪的错误。 能解释一下奇怪的方法在python中对我这么做吗?

1 个答案:

答案 0 :(得分:4)

如果您需要为任何单个定义指定值,CPPDEFINES必须是字典。

来自scons User Manual

  

如果$ CPPDEFINES是字典,$ CPPDEFPREFIX和$ CPPDEFSUFFIX构造变量的值将附加到字典中每个项目的开头和结尾。每个字典项的键是一个名称,被定义为字典项的对应值;如果值为None,则定义名称时没有显式值。

对于你的例子,我建议:

env.Append(CPPDEFINES = { 'BLUB': None, 'VALUE2': None, 'Foo': 1 })

env.Append(CPPDEFINES = { 'BLUB': None, 'VALUE2': None })
...and sometime later...
env.Append(CPPDEFINES = { 'Foo': 1 })