GNU Make und auto variablen



  • Hallo,
    ich habe irgendwie noch ein Verständnis-Problem, welches auch die GNU Make Hilfe nicht auslöschen konnte.
    Folgender Ausschnitt eines Makefiles:

    BOOT1  := Boot1.bin
    BOOT2  := Boot2.bin
    KERNEL := Kernel.bin
    
    .
    .
    .
    
    $(IMAGE): $(BOOT1) $(BOOT2) $(KERNEL)
            cat $+ > $@
    

    BOOT1 etc. sind Variablen, welche sich auf Dateien beziehen, die NICHT im aktuellen Verzeichnis zu finden sind, wohl aber über VPATH.
    Möchte ich jetzt das Target $(IMAGE) ausführen funktioniert das nicht, weil $+ einfach nur die Werte der Variablen beinhaltet (cat findet die Dateien also nicht).
    Ändere ich aber $+ (welches ja die ganze Abhängigkeitsliste beinhaltet) in $< (welches nur die erste Abhängigkeit beinhaltet) wird das plötzlich durch den korrekten Pfad ersetzt, d.h. der relative Pfad zur Datei Boot1.bin.

    Meine Frage ist jetzt: warum genau ist dieser Unterschied vorhanden ist? Warum werden im ersten Fall ($+) nicht auch die Pfade ermittelt?
    Aus dem hier kann ich das jedenfalls nicht herauslesen.

    Danke für eure Antworten.


Anmelden zum Antworten