我想将编译器定义设置为-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中对我这么做吗?
如果需要为任何单个定义指定值,则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)