Frage zu make und makefiles



  • Hi,

    ich braeuchte mal Hilfe beim erstellen eines makefiles. Dabei wuerde ich gern zwei verschiedene compilerversionen zum compilieren verwenden. Also in etwa so:

    make all_gcc_4.0
    bzw.
    make all_gcc_4.2

    hat jemand schonmal sowas gemacht und kann mir zeigen wie es geht? (Prinzipiell haette ich es gern das die entsprechenden .o und executable dateien einen Names haben der unabhaengig vom compiler ist, also micht main_gcc_4.0 sondern einfach main)

    Gruesse und vielen Dank 🕶



  • Man kann mit Variablen arbeiten. Diese kann man entweder in der Makefile setzen oder von außerhalb vorgeben. Ob man diese Variablen in einer Verarbeitungsregel ändern kann, weiß ich jetzt so nicht...

    Beispiel für das Setzen der Variablen im Makefile:

    CXX=g++-4.2.0
    
    ...
    
    myfile.o:
        $(CXX) -o myfile.o ...
    

    Wenn man die Zeile "CXX=g++-4.2.0" wegläßt, wird die Variable aus der Env genommen oder man kann sie beim Makeaufruf setzen.

    GXX=g++-4.2.0 make
    

    Hoffe, daß hilft.



  • meine Idee wäre

    ifeq ($(MAKECMDGOALS), all_gcc_4_0)
    
    CC := gcc-4.0
    # etc.
    
    endif
    
    ifeq ($(MAKECMDGOALS), all_gcc_4_1)
    
    CC := gcc-4.1
    # etc.
    
    endif
    
    .PHONY: all_gcc_4_0 all_gcc_4_1 all
    all_gcc_4_0: all
    
    all_gcc_4_1: all
    
    all: $(OBJECTS)
    
    #...
    

    Siehe auch das ultimative Makefile in der rudpf FAQ, wenn du den Rest auch gleich sauber hinbekommen willst 🙂

    <edit>
    btw. wäre die üblichere Methode eher
    CC=gcc-4.1 make all
    aufzurufen!
    </edit>


Anmelden zum Antworten