Мне кажется, что переменная CC
ни для чего не определена, когда вы вызываете этот макрос, а третий аргумент пуст. Это означает, что рецепт, который делает интернализатор после расширения eval
:
-MMD $$(CFLAGS)...
Быстрое исправление - экранирование переменной для CC
:
$$(CC) $(3) -MMD ...
Я думаю, что ваша модель расширения для этого очень странная и, вероятно, неверна в других отношениях. Но, не видя, как используется этот макрос, трудно сказать.
Один из простых способов отладки проблем eval
- продублировать контекст, в котором появляется eval
, и заменить eval
на функцию info
. Это выведет именно то, что будет анализировать make
, и это должен быть полностью нормальный и понятный синтаксис make-файла; например, изменить что-то вроде:
$(foreach X,$(STUFF),$(eval $(call FOO,$X)))
до:
$(foreach X,$(STUFF),$(info $(call FOO,$X)))
$(foreach X,$(STUFF),$(eval $(call FOO,$X)))