У меня есть этот проект C ++, который компилируется с использованием Makefile, и иногда, когда ( мое предположение ) отсутствуют некоторые включаемые файлы, я получаю загадочное сообщение «ошибка 2» и сообщение остановить процесс.
Я подозреваю, что отсутствующий включает в себя, потому что это происходит в третий раз, когда я включаю несуществующий файл заголовка.
Это выглядит так:
---- Build tmp/foo.o ----
---- Build tmp/bar.o ----
---- Build tmp/toto.o ----
---- Build tmp/tata.o ----
make: *** [build_Project] Error 2
Это сводит меня с ума, потому что даже использование подробных команд (где каждый вызов g ++ отображается), я ничего не вижу.
Я ожидал, что этот парень выдаст несколько ошибочных сообщений вроде « не может найти заголовок X » или « неопределенная ссылка на Y », но там ничего нет.
Мои варианты компиляции для gcc are -O0 -Wall -Werror -Wno-write-strings -fno-rtti -fno-exceptions
, если это поможет.
А, и мы используем трюк Makefile, включающий зависимости:
ifneq ($(strip $(DEPENDS)),)
ifneq ($(MAKECMDGOALS),clean)
-include $(DEPENDS)
endif
endif
(см. здесь и здесь для получения дополнительной информации)
Хотя это задокументировано, я подозреваю, что моя проблема как-то связана с включением зависимостей.
Если вы уже наткнулся на эту проблему, не стесняйтесь комментировать это ...
Заранее спасибо.
редактировать:
Хорошо, немного поиграв, подавление -
перед -include $ (DEPENDS)
дает мне дополнительную информацию (make-файл останавливается на отсутствует включенный файл).
make[1]: *** No rule to make target « foo.h », necessary for « tmp/bar.d ». Stop.
Теперь недостатком является то, что при первом запуске make
я получаю сообщение отсутствующий файл bar.d
для каждого файла зависимостей, который должен быть включен (вот почему мы ставим -
на первое место).
Любое решение?