Cpp lässt sich nicht bauen

Gast #4707832
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ß
Angehängte Dateien:
Gast
> 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
Gast
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 ?
>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?
Gast
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ß
Angehängte Dateien:
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.
Gast
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ß
Gast
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
Gast
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 ...
Gast
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?
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.