Makefile



  • Hallo.....
    ich habe ein kleines Problem mit meinem Makefile.
    Der Makefilekopf sieht ungefähr so aus:

    #=====================================================
    MODEL = vz1_test10
    MODULES =
    S_FUNCTIONS = aime3000.c aome3000.c
    S_FUNCTIONS_LIB =
    SOLVER =
    NUMST = 1
    TID01EQ = 0
    NCSTATES = 0
    BUILDARGS =
    MULTITASKING =
    EXT_MODE =
    CHRONOMETRY = 1

    # an dieser stelle will ich eine Abfrage machen ob "NUMST = 1" und dann etwas #tuen.dieses funktioniert aber nicht..Wie kann man diese realisieren.

    @if [$(NUMST) -eg 1] then; SOLVER = 1; fi

    CC = qcc
    LIBS = -lm
    OPTFLAGS = -O
    DEBUG =
    INCLUDES = -I/usr/include_own
    INCLUDES_OBJ = -I/usr/src/objs
    CFLAGS = $(OPTFLAGES) $(DEFINES) $(DEBUG) (INCLUDES)DEFINES=DRTDNUMST=(INCLUDES) DEFINES = -DRT -DNUMST=(NUMST) -DMODEL=(MODEL)DNCSTATES=(MODEL) -DNCSTATES=(NCSTATES) -DTID01EQ=(TID01EQ) DCHRONOMETRY=(TID01EQ)\ -DCHRONOMETRY=(CHRONOMETRY)
    TARGET = sim
    S_FUN_1 =$(word 1, (SFUNCTIONS))S_FUN_2=(S_FUNCTIONS)) S\_FUN\_2 =(word 2, $(S_FUNCTIONS))
    #=================================================================

    Hintergrund des Problems:

    Der erste Teil des Makefile wird generiert und "S_FUNCTIONS" kann verschiedene Sourcen beinhalten. Je nach beinhalteten Sourcen müssen noch andere Sourchen compeliert werden. Deshalb hab ich versucht oben im Kopf des Makefiles Variablen zu verändern über eine IF-Abfrage, dieses funktioniert irgendwie nicht. Das Makefile reagiert nicht auf die Änderung....

    Kann mir jemand bitte helfen

    Danke... 🤡



  • nimm doch das Make eigene if

    Beispiel:

    NUMST=1
    
    ifeq ($(NUMST),1) 
        SOLVER=1
    endif
    
    all:
        echo $(SOLVER)
    


  • Danke für deine Antwort!!
    Aber leider ist mir anscheinend noch nicht weiter geholfen.
    Ich habe folgende Zeilen an die oben erwähnte Stelle gesetzt:

    -----------------------------------
    ifeg ($(NUMST),1)\
    NUMST=2:\
    endif
    -----------------------------------

    Jetzt müßte eigentlich "NUMST" überschrieben werden, wird es aber nicht!!!
    "NUMST" ist einen Präprozessorangabe und das Compelieren müßte fehlschlagen bei NUMST=2....Komischer weise ist NUMST beim Compelieren immmer noch "1"

    Was mache ich falsch?



  • override ist glaub ich was du suchst, bin mir da aber nicht sicher


Anmelden zum Antworten