Hallo, ich habe das Xavr template für Xcode installiert dieses Makefile ist aber nicht mehr aktuell bzw lässt kein .cpp zu. Ich hab s jetzt mal umgeschrieben, bekomme aber jetzt die Fehler Meldung "missing separators. Stop" wenn ich nur eine .cpp erzeuge die aber noch nicht includiere. Kann man mir noch helfen ? :D Gruß
... 1 Sekunde bei Google.... http://stackoverflow.com/questions/16931770/makefile4-missing-separator-stop
Ich finde aber keinen Fehler, ich habs nochmal überprüft, aber es fand sich nichts
> Kann man mir noch helfen ? :D
Mit der kompletteren Fehlermeldung, welche
die exakte Position sogar mitteilt, ginge
das viel besser.
eine Möglichkeit:
Dort gehörte nämlich ein Tabulator hin, anstatt von
Leerzeichen.
eine bessere:
frag die Suchmaschine deiner Wahl, und
hilf dir selbst
Zu dem, die Meldung kommt nur wenn das cpp im selben Ordner und auch noch nicht includiert habe. Mir kommt das irgendwie komisch vor, lösche ich das cpp file verschwindet die Meldung. Beim Makefile wird doch immer das ganze file gelesen ?
Ich hab noch nicht soviel mit dem Thema zum tun gehabt...Mir wird nur diese Meldung ausgegeben mehr steht da nicht
>Mir kommt das irgendwie komisch vor, lösche ich das cpp file >verschwindet die Meldung. Beim Makefile wird doch immer das ganze file >gelesen ? Da scheint irgendetwas im Argen zu liegen. Möglicherweise schon bei der Installation? Eine fehlende Datei (gelöscht) sollte einen ganz eindeutigen Meckerer produzieren. Ein Makefile wird immer ganz gelesen. Ob dann auch eine, ein paar oder alle Zeilen abgearbeitet werden steht auf einem anderen Blatt. Bei den meisten make-Programmen gibt es eine Testmöglichkeit (Kommandozeilenparameter), mit der Du überprüfen kannst, was im Falle eines Falles abgeht. Sind die ausgegebenen Fehlermeldungen denn so geheim oder schweinisch, dass Du sie uns nicht zeigen kannst?
:
Bearbeitet durch User
Eben nicht aber wie schon erzählt steht da genau das was ich schon geschrieben habe. Mit der Console kom ich klar, nur müsste ich wissen was und wie. Ich hab make jetzt auch mal über das Terminal gestartet, dort kommt auch nur "MacBook-Pro-2:cyclop_osd dominikloher$ make foo++.cpp:1: *** missing separator. Stop. " Gruß
Make error: missing separator http://stackoverflow.com/questions/920413/make-error-missing-separator#920428
Claus schrieb: > Ich hab make jetzt auch mal über das Terminal gestartet, dort kommt auch > nur "MacBook-Pro-2:cyclop_osd dominikloher$ make > foo++.cpp:1: *** missing separator. Stop. > " Aha, also versucht make aus irgendeinem Grund, deinen C++-Quellcode als Makefile zu interpretieren. Claus schrieb: > Mir kommt das irgendwie komisch vor, lösche ich das cpp file > verschwindet die Meldung. Beim Makefile wird doch immer das ganze file > gelesen ? Nun, dein Makefile findet automatisch alle Dateien, die auf .cpp enden und verarbeitet sie:
1 | # List C source files here. (C dependencies are automatically generated.) |
2 | |
3 | SRC = $(wildcard *.c) |
4 | |
5 | # List C source files here. (C dependencies are automatically generated.) |
6 | |
7 | SRC = $(wildcard *.cpp) |
Zuerst werden also alle Files, die auf .c enden nach $(SRC) geschrieben, direkt danach werden die wieder verworfen und stattdessen alle Files, die auf .cpp enden, dort hineingeschrieben. Dein Problem liegt hier:
1 | DEPS = $(SRC:%.c=$(DEPSDIR)/%.d) |
2 | |
3 | -include $(DEPS) |
Hier werden alle gefundenen Quellcode-Dateien hergenommen, die Endung .c durch .d ersetzt und ins Makefile mit eingebunden. Das sind die Dependancy-Files, die make für jedes File sagen, wovon es abhängt. Da dein .cpp-File aber keine Endung .c zum ersetzen hat, wird der Name so übernommen, wie er ist, und damit wird es direkt ins Makefile eingebunden.
Ändere mal testweise den Dateinamen foo++.cpp in foo.cpp um. (eliminiere die 2 +)
Danke,schon mal. Ich hab hier gleich was vergessen, das muss natürlich CPPSRC heißen weiter unten wurde die Variable dann auch verwendet aber durch den Fehler nie beschrieben. "OBJ = $(addprefix $(OBJDIR)/,$(SRC:.c=.o)) $(addprefix $(OBJDIR)/,$(CPPSRC:.cpp=.o)) $(addprefix $(OBJDIR)/,$(ASRC:.S=.o)) " Ich werde es heute Abend mal abändern und testen. Gruß
Da ist noch mehr Murks drin:
1 | ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS) |
Da muss das GENDEPFLAGS raus, sonst compilierst du für C++ Dateien nur Dependencies. Wie Rolf Magnus schon schrieb: > Dein Problem liegt hier: > DEPS = $(SRC:%.c=$(DEPSDIR)/%.d) > > -include $(DEPS)
Was muss ich jetzt mit dem pfad "> DEPS = $(SRC:%.c=$(DEPSDIR)/%.d) " tun ?
Wäre es richtig wenn ich eine zweite Date für alle .cpp s anlege und includiere?
1 | DEPS = $(SRC:%.c=$(DEPSDIR)/%.d) $(CPPSRC:%.cpp=$(DEPSDIR)/%.d) |
wäre schon einen Schritt in der richtige Richtung.
Hatte ich schon versucht war mir aber nicht sicher ob s richtig war. Leider erkennt er class aber nicht als compiler hätte ich ihm -std=gnu99 bekannt gemacht. Gruß
Claus schrieb: > Hatte ich schon versucht war mir aber nicht sicher ob s richtig > war. > Leider erkennt er class aber nicht als compiler hätte ich ihm -std=gnu99 > bekannt gemacht. > > Gruß
Anscheinend erkennt der Compiler das nicht als C++ File, was man auch daran erkennt, daß er sich nicht über gnu99 beschwert. Gib dem mal die Sprachoption c++ mit, und eventuell noch den passenden c++ Version. gnu99 ist eine C, keine C++ Sprachversion. Oliver
Ich hab aktuell die version "0.11.sdk/usr/include/c++/4.2.1" installiert. Mit gnu++98 kommt wieder die Meldung das er das Schlüsselwort class nicht kennt. So ein misst ...
Kann es vielleicht ein Problem sein, dass es eine *.hpp-Datei ist? Siehe Bild: Beitrag "Re: Cpp lässt sich nicht bauen" Es scheint auch verbindungen zu fehlenden Symbolen zu geben, siehe diese 2 Threads: http://stackoverflow.com/questions/16336244/unknown-type-name-class#16564736 http://stackoverflow.com/questions/12110184/c-undefined-symbols-for-architecture-x86-64-when-compiling-on-mac-osx-lion Hast du schon mal versucht das ganze von Hand zu compilieren, also ohne make usw?
An die Endung hatte ich auch schon gedacht jap, leider hats nichts geholfen.Von hand nein, ich wusste ehrlich gesagt nicht wie das geht aber ich teste es dann gleich mal dazu lässt sich sicher was finden.
Du versuchst eine .hpp Datei zu compilieren. Abgesehen davon, daß C++ Quelldateien üblicherweise mit der Endung .cpp, .c++ oder .C benamst werden, enthält dein Makefile keine Regeln, um mit .hpp's (das - so wie's aussieht - als include-Datei gedacht ist) irgendwas sinnvolles anzustellen. Gib' dem Compiler ein .C zu fressen und lese dort deine .hpp-Datei per #include.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.