GNOS在MacOS X上制作模式规则

时间:2012-08-09 12:59:57

标签: macos build makefile gnu gnu-make

我在OS X Lion上苦苦挣扎makefile。我正在尝试使用%pattern规则将所有.c文件编译为当前目录中的对象。我正在使用规则:

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

但是说没有目标。我知道%pattern是gMake的特性但是-v说我已经安装了GNU make。我也试过旧式:

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

但它不起作用。我做错了什么?感谢。

1 个答案:

答案 0 :(得分:2)

如果那是你的整个Makefile,那么它确实没有目标。使用make file.o调用它或添加虚假目标all,其中列出了您要构建的文件的名称。它可以像

一样简单
.PHONY: all
all: $(patsubst %.cpp,%.o,$(wildcard *.cpp))

你所拥有的是模式规则,它指定“如果你想构建类型*.o的目标,这里是如何做到这一点”但没有指定“这是我们想要构建的文件”的实际目标。

通过使用,GNU Make已经知道如何编译C文件,因此您不需要定义它,除非您特别需要覆盖内置模式规则。