MacOS X上的GNU生成模式规则
我正在努力使用OSX Lion上的makefiles。我正在尝试使用%模式规则将所有.c文件编译为当前目录中的对象。我正在使用规则:MacOS X上的GNU生成模式规则,macos,build,makefile,gnu,gnu-make,Macos,Build,Makefile,Gnu,Gnu Make,我正在努力使用OSX Lion上的makefiles。我正在尝试使用%模式规则将所有.c文件编译为当前目录中的对象。我正在使用规则: %.o : %.c $(CC) -c $(CFLAGS) $< -o $@ 但这是不工作的。我做错了什么?谢谢。如果这是您的整个Makefile,那么实际上,它不包含任何目标。使用makefile.o调用它,
%.o : %.c
$(CC) -c $(CFLAGS) $< -o $@
但这是不工作的。我做错了什么?谢谢。如果这是您的整个Makefile,那么实际上,它不包含任何目标。使用
makefile.o
调用它,或者添加一个虚假的目标all
,其中列出了要生成的文件的名称。它可以简单到
.PHONY: all
all: $(patsubst %.cpp,%.o,$(wildcard *.cpp))
您拥有的是模式规则,其中指定“如果您想要构建类型为*.o
的目标,下面介绍如何实现”,但没有指定“这是我们想要构建的文件”的实际目标
顺便说一句,GNU Make已经知道如何编译C文件,因此您不需要定义它,除非您有特定的需要覆盖内置模式规则。请尝试从。您的输入文件是
.C
文件还是.cpp
文件?我的示例只是示例。在real中,我搜索.cc
文件<代码>%.o:%.cc$(CXX)-c$(cxflags)$^-o$@我已经解决了它。我尝试在单独的文件夹中使用vpath模式进行构建。我已经改变了我的文件夹结构,以建立在单一的文件夹和模式工作得很好。我不知道为什么,我认为它应该与vpath配合使用。
.PHONY: all
all: $(patsubst %.cpp,%.o,$(wildcard *.cpp))