在SCons中创建混合(值集)CPPDEFINES
我想把编译器的定义设置为 -DBLUB 和 -DFOO=1。
目前我只有:
env.Append("CPPDEFINES", ["BLUB", "VALUE2"])
现在我想通过 "FOO" : 1 加入第三个定义,因此我想把 CPPDEFINES 当作一个字典来使用,这样我以后测试起来会比较简单。
env["CPPDEFINES"].get("FOO") == 1
但是我尝试的所有方法都导致了语法错误或者奇怪的错误。有人能给我解释一下在 Python 中怎么做这个吗?
1 个回答
4
如果你需要为某个定义指定一个值,CPPDEFINES
必须是一个字典。
来自 scons 用户手册:
如果 $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 })