Wie hat eine Makefile für alle Files auszusehen?



  • Ich möchte eine makefile haben, die alle .cpps im aktuellen Ordner kompiliert (wenn sie älter als die .exes sind).

    Miene bisherige sieht so aus:

    # 	    == Compiler settings ==
    # To change the compiler, just edit the following
    # lines to your specific compiler commands.
    COMPILER = gcc
    OUTPUT_COMMAND = -o 
    .SUFFIXES: .exe .cpp
    
    #Build rule from .cpp to .exe
    .cpp.exe:
    	$COMPILER $< OUTPUT_COMMAND
    
    all: Const.exe
    

    Und so rufe ich es auf:
    g++ make makefile
    aber ich bekomme immer nur
    makefile: no such file or directory ausgegeben, obwohl ich im richtigen Verzeichnis bin und die Datei auch einfach nur makefile heißt, ohne Endung.

    In der makefile würde ich jetzt hinter all all die Files eingeben, die kompiliert werden sollten.

    Was mache ich in der makefile alles falsch, bzw. gibt es irgendeine makefile, die gnadenlos jede (zu alte) File kompiliert, ohne, dass man alles eintragen muss? 🙂

    PS: http://i36.tinypic.com/14jvy8h.jpg =O


  • Mod

    Da ist sehr viel falsch, du solltest dich nochmal mit den Grundlagen von Makefiles beschäftigen. Die gröbsten Fehler:

    1. Dein Makefile ist intern inkonsistent und selbst wenn es funktionieren würde, wären die Kommandos Blödsinn
    2. Make ist ein eigenständiges Programm und hat mit dem Compiler nix zu tun. Man ruft es gewöhnlich einfach mittels 'make' auf und es wird dann das Makefile im aktuellen Verzeichnis verarbeitet.
    3. Du willst die cpp kompilieren, wenn sie älter als die exes sind? Wozu soll das gut sein? Ich bin nichtmal sicher, ob make das überhaupt kann.


  • SeppJ schrieb:

    Da ist sehr viel falsch, du solltest dich nochmal mit den Grundlagen von Makefiles beschäftigen. Die gröbsten Fehler:

    1. Dein Makefile ist intern inkonsistent und selbst wenn es funktionieren würde, wären die Kommandos Blödsinn
    2. Make ist ein eigenständiges Programm und hat mit dem Compiler nix zu tun. Man ruft es gewöhnlich einfach mittels 'make' auf und es wird dann das Makefile im aktuellen Verzeichnis verarbeitet.
    3. Du willst die cpp kompilieren, wenn sie älter als die exes sind? Wozu soll das gut sein? Ich bin nichtmal sicher, ob make das überhaupt kann.
    1. Ich meinte natürlich umgekehrt.

    Und wie hätte nun ein makefile auszusehen, das einfach alle Dateien in einem Ordner kompiliert? Das ist erst einmal das einzige Anwendungsgebiet, das ich brauche, deswegen habe ich mich auch dagegen entschieden, mich länger mit makefiles auseinanderzusetzen - sondern erst dann, wenn ich wirklich einen anderen Verwendungszweck finden sollte.


  • Mod

    Dann guck dir mal das ultimative Makefile an. Das ist für die meisten einfachen Zwecke gut geeignet.


Anmelden zum Antworten