Как добавить новую переменную командной строки в существующую конструкторскую среду? - PullRequest
0 голосов
/ 17 марта 2012

Предположим, у меня есть SConstruct, который экспортирует среду конструирования в дочернюю компанию SConscript:

Export('SConscript', 'env')

Я бы хотел, чтобы SConscript вставил переменную командной строки foo в env чтобы я мог вызывать сборки с помощью команды

scons foo=bar

Возможно ли это, или поддержка конструктора таких переменных командной строки должна быть передана в конструктор среды?

Ответы [ 3 ]

1 голос
/ 17 марта 2012

Я не уверен, что ясно понимаю вопрос, но мой ответ:

Scons имеют очень хорошую поддержку параметров командной строки. В вашем случае используйте функцию ARGUMENTS.get('command_line_parameter', [default]). Чтобы вставить переменную в окружение, просто используйте оператор индекса [].

Пример:

env['foo'] = ARGUMENTS.get('foo') # if parameter not set, returns None

или со значением по умолчанию:

env['foo'] = ARGUMENTS.get('foo', 'bar')

Более подробную информацию о обработке параметров командной строки можно найти в руководстве по scons.

1 голос
/ 17 марта 2012

Создайте новый Variables объект, содержащий новую переменную, а затем обновите среду in the subsidiary SConscript`:

Import('env')
vars = Variables()
vars.Add('foo', help='a command line variable named foo')
vars.Update(env)
0 голосов
/ 09 июня 2012

Вы также можете передавать значения командной строки в среду, обновляя ее переменными:

vars.Update(env, ARGUMENTS)
...