GNU Make Pattern Rule в MacOS X

Я борюсь с make-файлами на OS X Lion. Я пытаюсь использовать шаблонное правило% для компиляции всех моих файлов.c в объекты в текущем каталоге. Я использую правило:

%.o : %.c                                                                      
    $(CC) -c $(CFLAGS) $< -o $@ 

Но сделать говорит, что нет целей. Я знаю, что% pattern это особенность gMake, но -v говорит, что у меня установлен GNU make. Я также попробовал старый стиль:

 .cpp.o:
        gcc $^ -o $@

Но это не работает. Что я делаю не так? Благодарю.

1 ответ

Решение

Если это весь ваш Makefile, то он действительно не содержит целей. Вызвать его с make file.o или добавьте фальшивую цель all в котором перечислены имена файлов, которые вы хотите построить. Это может быть так же просто, как

.PHONY: all
all: $(patsubst %.cpp,%.o,$(wildcard *.cpp))

То, что у вас есть, это шаблонные правила, которые определяют, "если вы хотите построить цель типа *.oВот как это сделать, "но нет реальных целей, которые указывают" это файл, который мы хотим построить ".

Кстати, GNU Make уже знает, как компилировать C-файлы, так что вам не нужно это определять, если только у вас нет особой необходимости переопределять встроенное правило шаблона.

Другие вопросы по тегам