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