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 habetarget: [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)