scons: как определить команду / цель, которая имеет место только во время 'scons -c'?

Прежде чем строить цели, я хочу создать некоторые структуры каталогов, я знаю, что могу использовать:

env = Environment()
env.Execute('mkdir -p xxx')

Но это приведет к выполнению "mkdir -p", даже когда я выполняю очистку:

scons -c

И будет вызван "env.Execute".

Хотелось бы, чтобы какая-то команда или цель имели место только когда я выполняю 'scons -c'

Как этого добиться? Благодарю.

1 ответ

Решение

Опция -c - это встроенная опция scons, и вы можете проверить, была ли она установлена ​​с GetOption('clean'),

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

env = Environment()
if not GetOption('clean'):
    env.Execute('mkdir -p xxx')
else:
    env.Execute('echo "Cleaning up..."')

Дополнительную информацию о других встроенных параметрах можно найти здесь: https://scons.org/doc/production/HTML/scons-user.html https://scons.org/doc/production/HTML/scons-man.html

Другие вопросы по тегам