Если вам нужно добавить 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».
Возможно, ваш реальный вопрос больше похож на «Почему сыновья не восстанавливают мои цели, даже если я изменил параметры командной строки?». В любом случае, возможно, вам нужно думать о реальных зависимостях, а не добавлять искусственные, чтобы попытаться перестроить.