QUOTE (сарматъ @ Oct 11 2013, 08:21)

расскажите какую проблему вы тут решаете? что то я не могу уловить разницы
Как бы проще объяснить - в makefile задаются некие глобальные опции проекта:
1) компилятор и, следовательно, пути к его библиотечным заголовочным файлам.
2) сторонние библиотеки и, следовательно, пути поиска их заголовочных файлов.
3) Тип процессора, который может определять некие define, по которым в некоторых файлах (и заголовчных, и исходного кода) могут включаться какие-либо участки либо подключаться те или иные другие заголовочные файлы.
4) просто какие-то глобальные на весть проект #define вроде NDEBUG
Вот чтобы эклипса могла все это учитывать, правильно раскрашивать исходники и правильно осуществлять навигацию по ним, обо всех этих параметрах надо ей правильно сообщить. Можно тупо их набивать на соответствующих вкладках вручную. Но во-первых это нудно, а во-вторых при любом изменении придется править как минимум в двух местах - в makefile и на одной/нескольких вкладках Эклипсы. Это муторно и не наш метод. В эклипсе реализован автоматический механизм: она вызывает компилятор, пытками

заставляет его выдать в stdout все #define и пути, после чего анализирует и усваивает вывод. Вот чтобы компилятор выдал все что нужно с учетом наших установок в makefile мы и просим Эклипсу вызывать не голый писишный компилятор ${COMMAND} -E -P -v -dD "${INPUTS}", а определенный в нашем makefile компилятор со всеми необходимыми для нашего проекта опциями. И делаем мы это заставляя make достичь цель discovery.
QUOTE (сарматъ @ Oct 11 2013, 08:21)

вообще не собирается пишет ошибку что какого то разделителя не хватает...
Там в начале строк табуляторы должны стоять, а не пробелы. А перед этим куском должна стоять цель discovery:
В общем у меня так:
CODE
#discovery target for Eclipse parser
.PHONY: discovery
discovery:
$(CC) $(INCLUDES) $(CFLAGS) -E -P -v -dD '$(specs_file)'
P.S. чуть-чуть отшлифовал текст.