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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist ein suffix-Regel erzählen, wie sich zu drehen
file.cpp
infile.o
für eine beliebigefile
.$<
ist eine automatische variable, verweisen auf die Quell-Dateifile.cpp
im Fall der suffix-Regel.$@
ist eine automatische variable, die Verweise auf das Ziel-Dateifile.o
.