Re: makefile, .d и .o файлов в отдельные директории
От: vnp  
Дата: 17.11.05 21:30
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Всем здравствуйте.


V>Rejecting impossible implicit prerequisite `debug/../a2a.cpp'.


V>Главное, что непонятно это Rejecting impossible implicit prerequisite `debug/../a2a.cpp'.. Почему?

V>Файл то реально по этому пути и находиться.

V>Причем эта ошибка, только при первом запуске make MODE=debug. Хотя все нужные директории debug создает. При втором запуске, когда эти директории уже существуют. Все работает.

V>И еще если убрать
V>-include $(DEPSS), то тоже все работает.

Простой ответ — не знаю. У меня есть подозрение, что make кеширует пути, и при обработке include $(DEPSS) приходит к выводу, что debug путей не существует.

Как чистенько победить проблему — тоже не знаю. Грязный хак — заменить

make-modedir:
ifneq ($(MODE), )
  -mkdir -p $(MODE) $(addsuffix $(MODE), $(dir $(OBJS)))
endif

на
ifneq ($(MODE), )
HACK := $(shell mkdir -p $(MODE) $(addsuffix $(MODE), $(dir $(OBJS))))
endif



и убрать все упоминания о make-modedir. Переменная HACK (как и всякая другая) вычислится до обработки целей, и директория будет создана вовремя.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.