2012-08-09 31 views
0

我正在使用OS X Lion上的makefile。我试图使用%pattern规则将所有的.c文件编译成当前目录中的对象。我正在使用规则:GNU在MacOS上制作模式规则X

%.o : %.c                  
    $(CC) -c $(CFLAGS) $< -o [email protected] 

但make说没有目标。我知道%模式是gMake的特征,但-v说我已经安装了GNU make。我也试过老款式:

.cpp.o: 
     gcc $^ -o [email protected] 

但它是做不工作。我做错了什么?谢谢。

+0

从[MacPorts](http://www.macports.org/)尝试[gmake](https://trac.macports.org/browser/trunk/dports/devel/gmake/Portfile)。 – 2012-08-09 13:02:00

+0

您的输入文件是.c'文件还是'.cpp'文件? – tripleee 2012-08-09 14:01:11

+0

我的例子只是例子。实际上,我搜索'.cc'文件。 '%.o:%.cc $(CXX)-c $(CXXFLAGS)$^-o $ @' – selfsx 2012-08-09 14:19:49

回答

2

如果这是您的整个Makefile,那么确实它不包含任何目标。用make file.o调用它,或者添加一个假冒目标all,其中列出了您想要创建的文件的名称。这可能是那样简单

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

什么你已经是指定模式规则“如果你想建立*.o类型的目标,这里是如何做到这一点”,但规定没有实际的目标。“这是一个文件我们想建立“。

By by,GNU Make已经知道如何编译C文件,所以你不需要定义它,除非你有特定的需要重写内置的模式规则。

+0

谢谢。我会尽力。 – selfsx 2012-08-09 14:21:50