-         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: rekursives Makefile - hilfe!?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    12.01.2007
    Beiträge
    93

    rekursives Makefile - hilfe!?

    Anzeige

    hi ich hoffe von euch kann mir jemand helfen

    hab folgendes anliegen, ich will in einem (master- oder top-level-)makefile mehrere andere makefiles in subdirs zusammenfassen bzw. einmal das master-makefile starten dann händelt der alle in den subdirs ab und zwar die befehle make-all und make-clean.

    so sieht etwa die struktur aus:


    die makefiles in den subdirs sind ganz normale files wie sie mfile generiert.

    die master-makefile hab ich selbst geschrieben...
    Code:
    MODULES = module1 module2
    all:
    for dir in $(MODULES); do \
    (cd $$dir && ${MAKE} all); \
    done
    clean:
    for dir in $(MODULES); do \
    (cd $$dir && ${MAKE} clean); \
    done
    was ich jetzt schon herausgefunden hab, er übernimmt den parameter 'all' bzw 'clean' nicht . es wir immer der erste befehl in der makefile ausgeführt sprich das all.
    d.h. es hat den selben effekt wenn ich folgendes schreiben würde:
    Code:
    for dir in $(MODULES); do \
    (cd $$dir && ${MAKE}); \
    done
    also wieder zur hauptfrage, wie übergebe ich dem makefile das ich im subdir aufrufe das ich zb make clean haben will?

    thx

    ps: im code müsst ihr euch den TAB immer dazu denken :P

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Disclaimer: none. Sue me.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    12.01.2007
    Beiträge
    93
    Code:
    for dir in $(MODULES); do \
    (make clean -C $$dir); \
    done
    du meinst dann so?[/code]

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Jupp.

    Bzw. ${MAKE}. Die () brauchst du jetzt nicht mehr. Ich vermute mal das Problem kommt daher, daß du unter Windows bist? Die andere Variante sollte auch gehen.
    Disclaimer: none. Sue me.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.01.2007
    Beiträge
    93
    boah ne das geht ja gar nicht
    Code:
    clean:
    	for dir in $(MODULES); do \
    	make clean -C $$dir; \
    	done
    der hat jetzt meinen rechner zugespämmt also der hängt sich da auf...

    ja ich bin unter windows drin.

    edit:
    kann das sein das es ein problem macht wenn ich das mit winAVR mache

    sprich ich mach da mach da immer tools>>make all

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Die klammern braucht man wohl doch? Was da genau abgeht zwischen sh, mingw, windows, cmd, etc weiß der Teufel... Mit den () geht's auch nicht?

    Möglicherweise ist das Problem, da das das ganze in einer shell laufen sollte. Geht denn, wenn du die ganze for-Schleife innerhalb von sh -c 'befehle' oder sh -c "befehle" ausführst?
    Disclaimer: none. Sue me.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    12.01.2007
    Beiträge
    93
    mh nö nix funktioniert, hab probleme mit der "for X in LIST; do.." irgendwie für er den LOOP-Befehl nicht richtig aus sprich er macht bloss das make aber sonst nix er nimmt derm parameter clean nicht mit

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Bei mit geht's auch nicht. Ich hab mal nen bug report losgeschickt, vielleicht tut sich ja was...
    Disclaimer: none. Sue me.

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    12.01.2007
    Beiträge
    93
    bin ma gespannt ob da was geht, hab schon überall gesucht ob ich vielleicht nen shell fehler in meinem skript hab, aber hab keinen gefunden.

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    51
    Beiträge
    1.195
    Ich hab' gerade nix passendes zur Hand, aber schaut doch mal in die Linux Kernel Sourcen. Die werden mit rekursiven makefiles gebaut.

    Wenn ich mich recht entsinne sind die aber so aufgebaut wie im ersten Post (also Liste der subdires nehmen, einzeln in die verzeichnisse wechseln, make aufrufen)

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •