Makefile Problem

  • Hallo
    Ich habe ein Problem mit meinem Makefile.
    Sinn ist es das ich
    make device1
    und
    make device2
    aufrufen kann.
    In dem Fall soll ein define DEVICE=deviceX gesetzt werden welches in allen Submakefiles und speziell in dem C-Code vorhanden ist.


    Wenn ich vorher per Hand
    export DEVICE=device1
    make device1
    mache, dann geht es.


    Was stimmt mit dem Makefile nicht?
    (ist nur ein kleiner Auszug.
    )

  • Spielt in dem Fall keine Rolle, da es das selbe macht, es macht sogar das Problem noch mehr deutlich.


    make -f Makefile_test device1

    Code
    DEVICE=device1
    export DEVICE=
    if [ "" != "device1" -a "" != "device2" ] ; then \
                    echo "Error, you need to define DEVICE to device1 or device2"; \
                    false; \
            fi;
    Error, you need to define DEVICE to device1 or device2
    make: *** [check] Error 1


    Also das Problem ist das ich es wohl nicht verstanden habe wie ich Variablen deklariere.

    Code
    #TEST MAKEFILE2
    
    
    all:
            DEVICE=device1
            echo $(DEVICE)


    "make all " liefert hier schon das Problem.

    Code
    make -f  Makefile_test2
    DEVICE=device1
    echo


    Eigentlich sollte das echo device1 ausgeben.

  • Make-Variablen sind keine Environment-Variablen. Das Problem ist jedoch, dass die Kommandos unter den Targets an die Shell übergeben werden (und nach deren Ende die Gültigkeit verlieren). Eine Make-Variable beginnt in der ersten Spalte (kann aber dann nicht vom Ziel abhängig verwendet werden).


    Kommt sowas in Frage?



    Code
    make DEVICE=1 device

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!