Загадочная ошибка make / gcc 2: как получить дополнительную информацию?

У меня есть этот проект 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 для каждого файла зависимостей, который должен быть включен (вот почему мы ставим - на первое место). Любое решение?

7
задан Community 23 May 2017 в 12:31
поделиться