Заставить gnu make восстановить объекты, на которые влияет определение компилятора
У меня есть make-файл, который принимает параметры в командной строке
make OPTION_1=1
На основе значения он добавит дополнительные определения компилятора к подмножеству объектов.
ifeq ($(OPTION_1), 1)
CC_FLAGS += -DOPTION_1_ON
endif
Изменение в определении влияет на содержимое включенного файла заголовка - заглушка или реализация предоставляется объектным файлам.
Как я могу получить make для восстановления файлов, "затронутых" изменением этой опции?
2 ответа
Я использую файл, чтобы запомнить последнее значение таких параметров, например:
.PHONY: force
compiler_flags: force
echo '$(CC_FLAGS)' | cmp -s - $@ || echo '$(CC_FLAGS)' > $@
cmp || echo
бит означает файл compiler_flags
касается только изменения настроек, так что теперь вы можете написать что-то вроде
$(OBJECTS): compiler_flags
вызвать восстановление $(OBJECTS)
всякий раз, когда изменяются флаги компилятора. Правило для compiler_flags будет выполняться каждый раз, когда вы запускаете make, но пересборка $(OBJECTS)
будет срабатывать, только если compiler_flags
файл был фактически изменен.