mikrocontroller.net

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


Autor: Claus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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ß

Autor: City Cobra (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Claus (Gast)
Datum:

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

Autor: kast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Claus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Claus (Gast)
Datum:

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

Autor: Sebastian S. (amateur)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Claus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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ß

Autor: Kaj G. (Firma: RUB) (bloody)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Rolf Magnus (rmagnus)
Datum:

Bewertung
2 lesenswert
nicht 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:
# List C source files here. (C dependencies are automatically generated.)

SRC = $(wildcard *.c)

# List C source files here. (C dependencies are automatically generated.)

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:
DEPS      = $(SRC:%.c=$(DEPSDIR)/%.d)

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

Autor: kast (Gast)
Datum:

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

Autor: Claus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Eric B. (beric)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ist noch mehr Murks drin:
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)

Autor: Claus (Gast)
Datum:
Angehängte Dateien:

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

Autor: Claus (Gast)
Datum:

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

Autor: Eric B. (beric)
Datum:

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

Autor: Claus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Claus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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ß

Autor: Claus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier das aktuelle Makefile

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Claus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Kaj (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/unknow...
http://stackoverflow.com/questions/12110184/c-unde...

Hast du schon mal versucht das ganze von Hand zu compilieren, also ohne 
make usw?

Autor: Claus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus F. (mfro)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.