Was bedeutet das Ziel “.cpp.o:" meine in ein Makefile?

Lerne ich den GNU makefile. Ich stieß auf diese Seite: http://mrbook.org/blog/tutorials/make/

Am Ende dieses Artikels, fand ich dies:

CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp hello.cpp factorial.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
    $(CC) $(CFLAGS) $< -o $@

Könnte jemand erklären, was im OBJEKT-variable und was Ziel .cpp.o: bedeutet (auch die $< in es)?

Fand ich auch, wenn ich so etwas wie:

SRC = $(wildcard $(SRC_DIR)*.c)
SRC_OBJS = $(patsubst %.c, %.o, $(SRC))

und mit "$(SRC_OBJS)" als Ziel, wird es kompilieren aller Objekte für jedes Objekt erforderlich. Dies geschieht nicht für die erste. Was ist der Unterschied?

Schreibe einen Kommentar