заставить scons использовать файл Sconstruct в качестве глобальной зависимости - PullRequest
2 голосов
/ 17 сентября 2009

Есть ли какой-нибудь способ заставить scons принудительно создать все цели, когда сам файл Sconstruct изменяется?

(причина в том, что если я изменю настройку сборки, я не могу полагаться на ранее созданный файл, чтобы соответствовать новым настройкам сборки)

1 Ответ

3 голосов
/ 17 сентября 2009

Если вам нужно добавить SConstruct в качестве зависимости одной из ваших целей, то либо вы делаете это неправильно, либо в SCons есть ошибка.

Например, если мы говорим о флагах компиляции. Скажем, вы хотите изменить с -O0 на -O2. В простейшем случае у вас будет:

env = Environment(CCFLAGS = '-O0')
env.Program(target = 'foo', source = 'foo.c')

Вы запускаете scons, он компилирует foo.c в foo.o и создает из этого foo (.exe). И если вы измените это на:

env = Environment(CCFLAGS = '-O2')
env.Program(target = 'foo', source = 'foo.c')

тогда scons восстановит все цели, которые определены в env. Это потому, что командная строка является неявной зависимостью для цели. Таким образом, изменение CCFLAGS изменит значение зависимости, что перестроит цель «foo».

Возможно, ваш реальный вопрос больше похож на «Почему сыновья не восстанавливают мои цели, даже если я изменил параметры командной строки?». В любом случае, возможно, вам нужно думать о реальных зависимостях, а не добавлять искусственные, чтобы попытаться перестроить.

...