Как было сказано в комментариях к вопросу,
Процесс сборки здесь немного негигиеничен.
Я рекомендую вам изменить его.
Как говорится, можно делать то, что вы хотите, тоже очень просто.
Итак, в качестве экспозиции,
эскиз:
$ cat Makefile
flags := normal
debug: flags := overridden
build:
: $@ flags: ${flags}
debug: build
: $@ done
Здесь у нас есть целевая переменная flags
.
flags
обычно normal
.
Тем не мение,
при построении debug
или любой из его зависимостей становится overridden
.
build
использует $flags
неудивительно:
$ make build
: build flags: normal
Удивительно, но значение, используемое при построении build
через debug
, является целевым значением для debug
:
$ make debug
: build flags: overridden
: debug done
Рекомендации
НЕ ДЕЛАЙТЕ ЭТОГО с вашим оригинальным make-файлом.
Если ты это сделаешь, твоя жизнь станет несчастной.
Рассмотрим:
make build
- редактировать
make debug
В итоге вы получите своего рода Frankenbuild - монстра, построенного из битов
Если вам не повезло, это может даже ссылка.
Ваша единственная гарантия успеха - чистая сборка каждый раз.
Классический признак ужасного make-файла.