我在OS X Lion上苦苦挣扎makefile。我正在尝试使用%pattern规则将所有.c文件编译为当前目录中的对象。我正在使用规则:
%.o : %.c
$(CC) -c $(CFLAGS) $< -o $@
但是说没有目标。我知道%pattern是gMake的特性但是-v说我已经安装了GNU make。我也试过旧式:
.cpp.o:
gcc $^ -o $@
但它不起作用。我做错了什么?感谢。
答案 0 :(得分:2)
如果那是你的整个Makefile,那么它确实没有目标。使用make file.o
调用它或添加虚假目标all
,其中列出了您要构建的文件的名称。它可以像
.PHONY: all
all: $(patsubst %.cpp,%.o,$(wildcard *.cpp))
你所拥有的是模式规则,它指定“如果你想构建类型*.o
的目标,这里是如何做到这一点”但没有指定“这是我们想要构建的文件”的实际目标。
通过使用,GNU Make已经知道如何编译C文件,因此您不需要定义它,除非您特别需要覆盖内置模式规则。