Makefile regel findet Target "g++" nicht



  • Hi,

    Projekt besteht derzeit nur aus main.h und main.cpp und ist ein Makefileprojekt.

    TOOLMANAGER	  = $(HOME)/workspace/ScreenMaker
    CCFLAGS   =  -Wall -Wextra -W -ansi
    CCOMPILE  = g++
    LIBS = -lm
    
    all: ScreenMaker
    
    ScreenMaker: main.o \
    		$(CCOMPILE) main.o  -o screenmaker
    
    main.o: main.h \
    		$(CCOMPILE) $(CCFLAGS) main.cpp -c 
    
    clean:
    	rm -f *.o
    	rm -f screenmaker
    

    sieht für mich erstmal gut aus, aber nicht für make....

    Ausgabe:

    **** Build of configuration Linux GCC for project ToolManager ****

    make all
    make: *** Keine Regel vorhanden, um das Target »g++«,
    benötigt von »main.o«, zu erstellen. Schluss.

    Gruß
    Franky



  • Lasse doch mal \ weg.



  • Hi,

    ja, funktioniert. Danke. Erklärst Du mir auch wieso es jetzt geht.

    Gruß
    Franky



  • Ein \ signalisiert, dass die Zeile eigentlich weiter gehen soll, obwohl ein Zeilenumbruch kommt. D.h. du kannst deine 80 Zeichen pro Zeile im Konsoleneditor einhalten, ohne Uebersichtlichkeit einzubuessen. Zumindest damals.



  • Hi,

    ok. Das bedeutet dann das...

    all: part1.o\
    	main.o 
    	$(CCOMPILE) main.o -o screenmaker
    
    main.o: main.h
         $(CCOMPILE) main.cpp  -c
    
    part1: part1.h\
        h2.h\
        h3.h\
        h4.h
         $(CCOMPILE) part1.cpp  -c
    

    dann also inrgendwann bei h5.h... h20.h schluss ist, weil ich dann über die Zeilenlänge gehe und deshalb dann das aufteilen sollte.
    Wobei dann vor $(CCOMPILE) ich ja einen zeilenumbruch brauche, da ich folgenden Syntax habe

    target: [Abhängigkeiten]
    [command]

    und [Abhängigkeiten] = h1\h2\...
    aber zeilen umbruch vor [command]

    Gruß
    Franky



  • Halte dich am besten an die Standardvariablennamen von Make $(CXX) $(CPPFLAGS) $(CXXFLAGS). Aber schau dir vielleicht mal eine saubere Makefile an. Die hier aus dem Forum kann sogar Dependencytracking machen http://www.c-plusplus.net/forum/viewtopic-var-t-is-88418.html

    Und -Wextra und -W sind übrigens das gleiche (-Wextra ist die neuere Variante). Du kannst also das -W aus deinen Flags nehmen.

    (Ich würde aber eher darauf verzichten eigene Makefiles zu frickeln. Nimm doch lieber CMake oder so)


Anmelden zum Antworten