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

abe*_*ier 5 python scons

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

目前我只有:

env.Append("CPPDEFINES", ["BLUB", "VALUE2"])
Run Code Online (Sandbox Code Playgroud)

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

env["CPPDEFINES"].get("FOO") == 1
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*her 4

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

来自scons 用户手册

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

对于你的例子,我建议:

env.Append(CPPDEFINES = { 'BLUB': None, 'VALUE2': None, 'Foo': 1 })
Run Code Online (Sandbox Code Playgroud)

或者

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