Z.B. wenn Sie die Quellen kompilieren wollen, aber Objekte in einem anderen Verzeichnis haben:
Das müssen Sie tun:
gcc -c -o <obj/1.o> <srcs/1.c> <obj/2.o> <srcs/2.c> ...
aber bei den meisten Makros ist das Ergebnis alle Objekte, gefolgt von allen Quellen, wie :
gcc -c -o <all OBJ path> <all SRC path>
also wird dies nichts kompilieren ^^ und Sie werden nicht in der Lage sein, Ihre Objektdateien in ein anderes Verzeichnis zu legen :(
die Lösung ist die Verwendung dieser speziellen Makros
$@ $<
Dies erzeugt eine .o-Datei (obj/file.o) für jede .c-Datei im SRC (src/file.c)
$(OBJ):$(SRC)
gcc -c -o $@ $< $(HEADERS) $(FLAGS)
bedeutet dies:
$@ = $(OBJ)
$< = $(SRC)
sondern zeilenweise INSTEAD aller Zeilen von OBJ gefolgt von allen Zeilen von SRC