Noch einmal wegen Makefiles...

  • Noch einmal wegen Makefiles...

    Hi!
    Ich hab auch eine Frage zu Makefiles unter Windows, jedoch geht es um kompilieren mehrerer Dateien aus verschiedenen Verzeichnissen.
    Bisher hatte ich alle Quellcode-Dateien im selben Verzeichnis und alles lief Problemlos, aber aufgrund eines größeren Projektes möchte ich diese nun Aufteilen.

    Beispiel:

    Quellcode

    1. /bin - Verzeichnis vom Compiler
    2. |
    3. MAKEFILE /Levels /Enemys
    4. | |
    5. level1.cpp enemy1.cpp

    Im Bin-Verzeichnis befindet sich also das Makefile und 2 Ordner mit CPP-Dateien.

    Das Makefile wenn alles im selben Verzeichnis wäre sah so aus:

    Quellcode

    1. CPP=g++
    2. EXE=Test
    3. OBJECTS= level1.o enemy1.o ${EXE}.o
    4. ${EXE}: ${OBJECTS}
    5. ${CPP} -o ${EXE} ${OBJECTS}


    Hoffentlich hat hier jemand sowas schonmal gemacht. Meine Suche bei google und so war bisher erfolglos...
    :roll:
  • also ... habs jetz alleine rausbekommen.
    Ist ganz einfach, man muss es halt nur wissen...

    Hier steht alles:
    http://www.gnu.org/software/make/manual/make.html

    Man erstellt eine Variable namens VPATH die die Verzeichnisse enthält, wo noch gesucht werden soll...
    Hier jetzt das makefile:

    Quellcode

    1. #---------------------------------------------------
    2. #Variablen definieren:
    3. #---------------------------------------------------
    4. CPP=g++
    5. CPPFLAGS=-mwindows -D__GTHREAD_HIDE_WIN32API
    6. LIBS=-lalleg
    7. EXE=Test
    8. VPATH = Levels : Enemys # das ist die magische Zeile!
    9. #---------------------------------------------------
    10. #Alle Objekt-Dateien zusammen:
    11. #---------------------------------------------------
    12. OBJECTS= level1.o enemy1.o ${EXE}.o
    13. #---------------------------------------------------
    14. Die EXE-Datei wird erzeugt:
    15. #---------------------------------------------------
    16. ${EXE}: ${OBJECTS}
    17. ${CPP} -o ${EXE} ${OBJECTS} ${CPPFLAGS} ${LIBS}
    Alles anzeigen