.cpp.o:
,.o:
和%.o: %.c
之间的区别是什么?
这是一个简单的Makefile示例:
CC=g++
CFLAGS=-c -Wall
SOURCES=file1.cpp file2.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=program
$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) -o $@
#.o:
#.cpp.o:
%.o: %.c
$(CC) $(CFLAGS) $< -o $@
all: $(SOURCES) $(EXECUTABLE)
clean:
rm -rf $(OBJECTS) $(EXECUTABLE)
我注意到输出是相同的,但我猜它们在内部以不同的方式解释。 有没有一种首选的方法呢?
答案 0 :(得分:3)
.cpp.o: # build *.o from *.cpp (old style notation)
%.o: %.c # build *.o from *.c (new style notation)
两种方法都有效但新风格更强大,因为它允许你通过模式匹配编写更复杂的结构:
%.uuu: %.vvv %.www