В чем разница между .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 [email protected]
#.o:
#.cpp.o:
%.o: %.c
$(CC) $(CFLAGS) $< -o [email protected]
all: $(SOURCES) $(EXECUTABLE)
clean:
rm -rf $(OBJECTS) $(EXECUTABLE)
Я заметил, что выход такой же, но я предполагаю, что они интерпретируются по-разному внутренне. Есть ли предпочтительный способ сделать это?
Моего предпочтительным способом * не имеющими * любое правилом джокера. Я использую одно правило для исходного файла, чтобы управлять зависимостями файлов '.h', а также некоторые другие вещи. – Eregrith
Я согласен с тем, что правила для файла хороши, особенно для небольших проектов. – kometonja