Makefile Fragen



  • Abend!

    Ich habe hier ein recht altes Makefile (Namens makerules), zu dem ich einige Fragen habe. Eigentlich weiss ich wie Makefiles funktionieren, aber dieses hier gibt mir einige Raetsel auf...

    Das Makefile beginnt so:

    default: dso

    dso: (TARGETS:=.dso) (TARGETS:=.dso) \ (TARGET:=.dso) \
    $(LIBRARY:=.dso)
    opt: (TARGETS:=.opt) (TARGETS:=.opt) \ (TARGET:=.opt) \
    $(LIBRARY:=.opt)

    Was bedeuten die 3 Zeilen nach dso:? Ich kannte Makefiles bis jetzt immer nur so:

    Target: Dependencies
    Rule

    Aber in dieser dso: Zeile sieht das irgendwie anders aus. Klar, das dso ist das Target, aber was sind die Dependencies? Was die Rule? Und was bedeutet TARGETS und LIBRARY? Sind das Standarvariablen? Und ich dachte die Syntax a la (FOO:=.dso) Bedeutet Textersetzung. Aber was soll hier ersetzt werden?

    Weiter unten kommen dann lauter solche Bloecke:

    $(TARGETS:=.dbg):
    @echo "Make debug version of @"@iftest!dDebug.@" @if test ! -d Debug.(ARCH) ; then \
    mkdir -p Debug.$(ARCH) ; fi
    @ rm -f (subst.dbg,,(subst .dbg,,@)
    @cd Debug.(ARCH); (ARCH) ; \ {MAKE} -f ../makefile.lnx OPTIMIZER="-g -O" \
    LIBRARIES='$(PROJDIR) SYSTEM {SYSTEM}' \ (@)cmd ; cd ..
    ln -s Debug.(ARCH)/(ARCH)/(@)cmd (subst.dbg,,(subst .dbg,,@) ;

    Hier blicke ich Null durch. 😞
    Was macht das Ding? Ist das jetzt eine normale Makefile Rule oder was anderes?
    Was ich auch nicht verstehe: Dieser Block steht in einem Makefile makerules. Und einen Ordner hoeher gibt es eine Textdatei namens makefile.lnx, die makerules inkludiert. Sprich in makefile.lnx steht das:

    include $(OBJ_DIR)/makerules

    Ok, makefile.lnx inkludiert also einfach makerules. Aber wieso zur Hoelle startet dann makerules wieder makefile.lnx (siehe 7. Zeile im Block oben)??
    Das is doch dann eine Endlosrekursion?

    Ich hoffe jemand kennt sich mit Makefiles aus und kann mir helfen! 🙂



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten