Часть моего Makefile:
CPUDEPS=./mydeps.cpu
(...)
deps: $(CPUDEPS)
$(CPUDEPS): $(CCFILES)
@echo [DEPS] CPU
$(CMDECHO)makedepend -Y -s'# CPU sources dependencies generated with "make deps"' \
-w4096 -f- -- $(CFLAGS) -- $^ 2> /dev/null > $(CPUDEPS)
(...)
sinclude $(CPUDEPS)
Задача 1 : включения выполняются на первом этапе обработки, цели на втором этапе; Итак, если ./mydeps.cpu не существует, и я "делаю deps", сначала я получаю сообщение об ошибке
Makefile:335: ./mydeps.cpu: No such file or directory
Я скрываю ошибку, используя sinclude
вместо include
, но проблема все еще здесь: включен старый файл, а не только что созданный. Нужно запустить его дважды, чтобы включить обновленный файл. Это потому, что make выполняет двухфазную обработку; Есть ли какой-нибудь способ сказать make, чтобы завершить целевой deps до анализа включений?
Проблема 2 : даже если файл ./mydeps.cpu не существует и make deps
фактически создает его, я всегда получаю «make: ничего не делать для deps». Это не происходит с другими целями. Я не понимаю, почему и как этого избежать.