Wo ist der Fehler im Makefile



  • Hallo zusammen,

    ich versuche mit folgenden Code die Abhängigkeiten für ein Target zu definieren, leider wird die IF Anweisung falsch ausgewertet. Wo ist also mein Fehler?

    PROJECT_PATH_SOURCE=/a/b/c
    NAME_OF_EXECUTABLE=Test
    LINK_TO_EXECUTABLE = $(PROJECT_PATH_SOURCE)/$(NAME_OF_EXECUTABLE)
    
    ifeq ( $(wildcard $(LINK_TO_EXECUTABLE)) , "" )
        BUILD_ALL_DEPENDENCIES=UBeeMeLibs MoversightSetup
    else
        BUILD_ALL_DEPENDENCIES=
    endif
    
    all: $(BUILD_ALL_DEPENDENCIES)
        @echo $(BUILD_ALL_DEPENDENCIES)
        --- do something
    

    Fürs ifeq habe ich auch schon probiert:

    ifeq ( $(wildcard $(LINK_TO_EXECUTABLE)) , )
    ifeq ( ""+$(wildcard $(LINK_TO_EXECUTABLE)) , "" )
    ifeq ( "x"+$(wildcard $(LINK_TO_EXECUTABLE)) , "x" )
    

    Egal ob die Datei da ist, oder nicht, er geht immer in den else Fall. Jemand einen Tipp? Ich sehe glaub ich den Wald vor lauter Bäumen nicht. Danke!!!


  • Mod

    ifeq ( $(wildcard $(LINK_TO_EXECUTABLE)) , )
    

    Das hier sollte eigentlich richtig sein.

    edit: Ach, du hast da ja noch ein Leerzeichen versteckt, da muss man ja ganz genau hingucken. So ist es richtig:

    ifeq ($(wildcard $(LINK_TO_EXECUTABLE)) , )
    

    Ich höre schon von Ferne einen Kopf auf einen Tisch hauen 😃 .

    edit2: Oder wenn man es ganz genau nimmt:

    ifeq ($(wildcard $(LINK_TO_EXECUTABLE)),)
    

    Merke: Whitespace in Makefiles wird nicht wie in anderen Sprachen ignoriert.



  • Cool. Rumps. Rumps. Es tut 😃 Vielen Dank!


Anmelden zum Antworten