Forum: Compiler & IDEs Cpp lässt sich nicht bauen


von Claus (Gast)


Angehängte Dateien:

Lesenswert?

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ß

von City Cobra (Gast)


Lesenswert?


von Claus (Gast)


Lesenswert?

Ich finde aber keinen Fehler, ich habs nochmal überprüft, aber es fand 
sich nichts

von kast (Gast)


Lesenswert?

> 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

von Claus (Gast)


Lesenswert?

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 ?

von Claus (Gast)


Lesenswert?

Ich hab noch nicht soviel mit dem Thema zum tun gehabt...Mir wird nur 
diese Meldung ausgegeben mehr steht da nicht

von Sebastian S. (amateur)


Lesenswert?

>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
von Claus (Gast)


Angehängte Dateien:

Lesenswert?

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ß

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?


von Rolf M. (rmagnus)


Lesenswert?

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.

von kast (Gast)


Lesenswert?

Ändere mal testweise den Dateinamen foo++.cpp in foo.cpp um.
(eliminiere die 2 +)

von Claus (Gast)


Lesenswert?

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ß

von Eric B. (beric)


Lesenswert?

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)

von Claus (Gast)


Angehängte Dateien:

Lesenswert?

Was muss ich jetzt mit dem pfad "> DEPS      = $(SRC:%.c=$(DEPSDIR)/%.d)
"
tun ?

von Claus (Gast)


Lesenswert?

Wäre es richtig wenn ich eine zweite Date für alle .cpp s anlege und 
includiere?

von Eric B. (beric)


Lesenswert?

1
DEPS      = $(SRC:%.c=$(DEPSDIR)/%.d)  $(CPPSRC:%.cpp=$(DEPSDIR)/%.d)
wäre schon einen Schritt in der richtige Richtung.

von Claus (Gast)


Lesenswert?

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ß

von Claus (Gast)


Angehängte Dateien:

Lesenswert?

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ß

von Claus (Gast)


Angehängte Dateien:

Lesenswert?

Hier das aktuelle Makefile

von Oliver S. (oliverso)


Lesenswert?

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

von Claus (Gast)


Lesenswert?

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 ...

von Kaj (Gast)


Lesenswert?

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?

von Claus (Gast)


Lesenswert?

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.

von Markus F. (mfro)


Lesenswert?

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
Noch kein Account? Hier anmelden.