Создать смешанный (набор значений) CPPDEFINES в SCons - PullRequest
5 голосов
/ 21 сентября 2011

Я бы хотел установить определения компилятора на -DBLUB , а также -DFOO = 1 .

В настоящее время у меня есть только:

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

Теперь я хотел бы включить третье определение через "FOO": 1 и, таким образом, использовать CPPDEFINES в качестве словаря, чтобы потом можно было легко тестировать

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

или около того.Все, что я пробовал, приводит к синтаксическим ошибкам или странным ошибкам.Можно ли мне объяснить странные способы сделать это на python?

1 Ответ

4 голосов
/ 21 сентября 2011

Если вам нужно указать значение для любого отдельного определения, 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 })
...