mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Eclipse löst die Includes nicht auf


Autor: thinkJD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich hänge jetzt schon seit zwei Tagen an einem Problem und komme einfach 
nicht weiter.

Ich benutze Eclipse zusammen mit dem AVR-Plugin. Jetzt wollte ich die 
RFM12 Lib von hier -> http://www.hansinator.de/rfm12lib/ einbinden und 
für mein Projekt nutzen.

Ich habe mich genau an den folgenden Abschnitt der Doku gehalten:

In order to run, the library will need some configuration, which is 
stored in a header file usually named rfm12_config.h. See the section 
Configuration for more information on how to configure the library. 
Otherwise just take the demo configuration header from the library 
folder, put into your source folder and change the values to your needs. 
The library itself will not include the configuration file, you have to 
do this manually before including the rfm12.h header. However, the 
rfm12.c file will need a special wrapper.

To use the library with your project, it's advised to create two wrapper 
files, which will simplify your makefile and include the library 
configuration. Just create two files, rfm12.c and rfm12.h inside your 
source folder and include the RFM12 configuration header (usually 
rfm12_config.h), as well as the real rfm12.c and rfm12.h.
Here's an example:

rfm12.h
 #include "rfm12_config.h"
 #include "../rfm12lib/rfm12.h"

rfm12.c
 #include "rfm12_config.h"
 #include "../rfm12lib/rfm12.c"

Wenn ich das Projekt dann bauen möchte bekomme ich von Eclipse nur eine 
Latte Fehlermeldungen:

'BIT_SS' undeclared (first use in this function)
'DATARATE_VALUE' undeclared (first use in this function)
'DDR_SS' undeclared (first use in this function)
'FREQ' undeclared (first use in this function)
und so weiter ...

Kann mir jemand von euch sagen, was ich falsch mache? Muss ich noch 
etwas anderes beachten?

Gruß JD

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du die Dateien

#include "include/rfm12_hw.h"
#include "include/rfm12_core.h"

mit "reingezogen"?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Passt den deine Projektstruktur zu der des Beispiels?
Was das ganze "simplifien" soll erschließt sich mir nun aber auch nicht.

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

Bewertung
0 lesenswert
nicht lesenswert
Wo rein gezogen? Die ist in dem SRC Verzeichnis mit drin. Ich habe mal 
ein Bild mit angehangen.

Autor: thinkJD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir jetzt ein Makefile gebaut und mache es ganz old school. Die 
IDE oder das Plugin scheinen einfach nicht ausgereift zu sein.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
thinkJD schrieb:
> Ich habe mir jetzt ein Makefile gebaut und mache es ganz old school. Die
> IDE oder das Plugin scheinen einfach nicht ausgereift zu sein.
Klar die anderen sind immer schuld...
Was mir ganz "old school" auffällt ist z.B. das du garkeinen Ordner 
'rfm12lib' hast, trotzdem in deinem rfm12.h darauf verweisst.

Ansosnten würde man es 'new school' vermutlich eh so machen, dass man 
für die Lib ein eigenes Projekt anlegt vom Typ statische Library, dort 
die RFM12 dateien reinlegt, kompiliert und im anderem Projekt dann 
einfach als einzubindene Libary + include Pfad angibt.
Dann kann man das nämlich auch noch in anderen Projekten nutzen ohne 
jedesmal alles neu zu machen.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
thinkJD schrieb:
> 'BIT_SS' undeclared (first use in this function)

Diese Fehlermeldung bekommst du weder oldschool noch newschool mit einem 
anderen makefile weg, wenn da nicht vorher der Fehler

>fatal error: xxx.h: No such file or directory

kam. Und den bekommst du durch das hinzufügen der source-Dirs zu den 
Includepfaden weg. Das alles hat mit Eclipse oder dem avr-plugin nichts 
zu tun, die Includepfad-defaults kommen vom gcc.

Oliver

Autor: thinkJD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Fehler... das lag daran, dass ich den Text aus der Doku kopiert 
habe. In meinem Projekt habe ich die Pfade entsprechend angepasst. Es 
kommt mir so vol als wollte Eclipse das SRC Verzeichnis übersetzen ohne 
vorher in die main.c zu schauen.

Mit einem Makefile funktioniert es, ganz oldschool wie schon 
geschrieben.

Wenn du ein wenig Zeit hast, kannst du es ja mal mit deiner Umgebung 
probieren. Dann exportiere ich das Projekt später und lade es hoch.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
thinkJD schrieb:
> Es
> kommt mir so vol als wollte Eclipse das SRC Verzeichnis übersetzen ohne
> vorher in die main.c zu schauen.

Eclipse übersetzt gar nix. Das macht der Compiler. Und der "schaut" auch 
nicht voher ins main.c, sondern übersetzt jede einzelne .c-Datei für 
sich, ganz unabhängig von allen anderen. Von den anderen weiß der gar 
nichts. Das ist ganz unabhängig davon, ob der nun von einem durch 
Eclipse oder von dir oldschool erzeugten makefile aufgerufen wird.

Eclipse baut das makefile basierend auf den Einstellungen, die du in den 
Projekt-Settings gemacht hast. Da musst du die Includepfade richtig 
setzen, dann funktioniert das auch.

Und selbstverständlich müssen in allen Dateien alle benötigten header 
files includiert sein.

Oliver

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch was:

Ich habe die ganz starke Vermutung, daß du alle .c-Files aus den 
Verzeichnis src in main per #include "xxx.c" includiert hast.

Das wäre dann allerdings nichgt oldschool, sondern bullshit.

Oliver

Autor: thinkJD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, das hast du falsch vermutet.
Ich habe genau die Doku beachtet und die zwei Wrapper-Files erstellt und 
im Main die rfm12.h includiert.

Das jede C-Datei einzeln übersetzt wird war mir nicht klar, danke für 
die Info. Das würde erklären warum es nicht übersetzt wird.
Ich kann den Include Pfad doch auch so -> #include "src/rfm12.h" direkt 
angeben. Dazu brauch ich doch keinen Pfad einzustellen oder habe ich da 
noch einen Denkfehler?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
thinkJD schrieb:
> Ich kann den Include Pfad doch auch so -> #include "src/rfm12.h" direkt
> angeben. Dazu brauch ich doch keinen Pfad einzustellen oder habe ich da
> noch einen Denkfehler?

Das geht natürlich auch.

Oliver

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.