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-файлы, так что вам не нужно это определять, если только у вас нет особой необходимости переопределять встроенное правило шаблона.