makefile, .d и .o файлов в отдельные директории
От: Vzhyk  
Дата: 17.11.05 10:20
Оценка:
Всем здравствуйте.

Есть необходимость при сборке проекта складывать .d, .o файлы в директории отличные от текущей (например debug), подобно MSVC.

Я сделал маленький пример. См. вложение.

Он прекрасно собирается make (GNU Make version 3.79.1, Built for i686-pc-msys) под Windows и не хочет собираться make (GNU Make version 3.79.1, Built for i386-redhat-linux-gnu) под Linux (redhat 7.2).
Собирать через a2/makefile с ключом MODE=debug.

Подскажите, какие я сделал ошибки в makefile'ах, что во вложении?

Ошибки при обработке makefile следующие:
...
File `liba2a.a' does not exist.
Considering target file `debug/a2a.o'.
File `debug/a2a.o' does not exist.
Looking for an implicit rule for `debug/a2a.o'.
Trying pattern rule with stem `a2a'.
Rejecting impossible implicit prerequisite `debug/../a2a.cpp'.
...
Must remake target `debug/a2a.o'.
make[1]: *** No rule to make target `debug/a2a.o', needed by `liba2a.a'. Stop.
make[1]: Leaving directory `/home/user7/Eclipse/a2/a2a'

Главное, что непонятно это Rejecting impossible implicit prerequisite `debug/../a2a.cpp'.. Почему?
Файл то реально по этому пути и находиться.

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

Не знаю, как работают тут вложения, так что вот еще и ссылка на вложение http://www.rsdn.ru:80/File/48240/a.zip
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.