mikrocontroller.net

Forum: Compiler & IDEs Eclipse add existing c-file to existing project??


Autor: Holm Tiffe (holm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich spiele gerade ein Bisschen mit Eclipse herum, im Wesentlichen um
einem Freund die Sache über zu helfen...ich selbst werde bei make & 
friends bleiben :-)

Ich habe hier Eclipse Neon und das avr-plugin über von Soureforge 
installiert.

Ich habe jetzt mal ein avr-c Projekt kreiert und möchte nun zu diesem 
Projekt existierende C-Quellen hinzufügen (hier Uart Code). Ich möchte 
also nicht ein Projekt aus einem existierenden Make-Projekt importieren, 
sondern nur woanders liegende C Quellen und Header hinzufügen 
(kopieren). Wie geht das?


Gruß,

Holm

Autor: hp-freund (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Moin,
einfach die Dateien hinein kopieren. Wenn Du vorhandene inc und src 
Verzeichnisse nimmst, nur noch ein "Index -> Rebuild" und es sucht sich 
alles selbst zusammen wenn es das Make verwaltet.
Bei einem neuen inc Verzeichnis musst Du das in die includes anpassen.

Sollte etwas nicht gefunden werden, schaue ob Datei oder Verzeichnis auf 
"exclude from build" gesetzt sind.

Wenn Du ein Makefile vorgegeben hast, alles wie gehabt.

Bei make & friends bleibst Du ja auch, nur automatisch und vor allem -
mit Textvervollständigung.

Ein Aufruf von make von der Konsole ist weiterhin möglich.

Autor: Holm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hp-freund schrieb:
> Moin,
> einfach die Dateien hinein kopieren.

Hmm...das kanns ja eigentlich nicht sein.

Üblicherweise arbeite ich mit dem vi, da geht das ja noch (:r 
blafasel.c)
aber hier hat das wohl extern zu erfolgen oder per copy&paste .. bei 
längeren Files wohl eher ätzend.

Kennt der Eclipse-interne C/C++ Editor so ein Insert from File ?

Selbst das AVR-Studio 4 hatte so ein Kommando "add existing 
source/header File to the project".

Ich habeversucht entspechende Dateien in den Projektordner zu kopieren 
und dann entsprechende Files erzeugt..da werden die Dateien einfach 
überbügelt..so hatte ich mir das auch gedacht.


Make hin oder her..ich arbeite mit FreeBSD und BSD make ist was Anderes 
als GNU-Make..ich vermute das da die nächsten Probleme zu erwarten 
währen..

Ich will aber Jemandem der bisher nur unter Windows mit Bascom 
gearbeitet hat beibringen wie er unter Linux/Unix klar kommt. Wenn ich 
aber schon bei den ersten 3 "Takten" auf seltsame Probleme stoße finde 
ich das nicht ansatzweise putzig....

Gruß,

Holm

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gibt es wohl noch Unklarheiten.

Ich meinte Du kannst einzelne Dateien oder auch Verzeichnisse dem 
Projekt hinzu fügen.

Nehmen wir an Du hast ein Verzeichnis "meine_libs" mit den 
Unterverzeichnissen "inc" und "src".

Dann kannst Du natürlich "meine_libs" komplett in das Projekt kopieren 
oder auch den link darauf.

Unter "File -> Import" gibt es noch mehr Möglichkeiten.

Autor: dummy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>aber hier hat das wohl extern zu erfolgen oder per copy&paste .. bei
>längeren Files wohl eher ätzend.

Einfacher geht es doch nun wirklich nicht mehr.
Gedankensteuerung kann Eclipse noch nicht.

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch vergessen: Du kannst sogar ein Bibliothek Projekt als Referenz 
Projekt angeben.

Autor: Holm Tiffe (holm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hp-freund schrieb:
> Da gibt es wohl noch Unklarheiten.
>
> Ich meinte Du kannst einzelne Dateien oder auch Verzeichnisse dem
> Projekt hinzu fügen.
>
> Nehmen wir an Du hast ein Verzeichnis "meine_libs" mit den
> Unterverzeichnissen "inc" und "src".
>
> Dann kannst Du natürlich "meine_libs" komplett in das Projekt kopieren
> oder auch den link darauf.
>
> Unter "File -> Import" gibt es noch mehr Möglichkeiten.

Ich habe es nicht mit Subdirectories versucht, sondern mit einzelnen 
Files und der Menüpunkt "File -> Import" gliedert sich unter "General" 
in "Archive File" mit Kompressionssymbol, in "Existing Projects into 
Workspace", "File System", "Preferences" und "Projects from Folder or 
Archive".
Nichts davon paßt.
Unter "C/C++" gibts "C/C++ Project Settings" und "Projects from Folder 
or Archive"...nix paßt.
Ich möchte zu einem Projekt ein existierndes File hinzufügen...

>Noch vergessen: Du kannst sogar ein Bibliothek Projekt als Referenz  Projekt 
angeben.

..und was genau tut das?



@dummy:

"Einfacher geht es doch nun wirklich nicht mehr.
Gedankensteuerung kann Eclipse noch nicht."

Du machst scheinbar Deinem Namen alle Ehre?

Bei ein paar Hundert Zeilen wird das zeitraubend und nervig. Ich hatte 
oben schon angedeutet das es diesen (an und für sich 
selbstverständlichen) Menüpunkt selbst im alten AVR Studio gibt. Also 
bitte...etwas weniger dümmlich, ja?

Gruß,

Holm

Autor: Johannes S. (jojos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann die Dateien einfach per Drag 'n Drop in das Eclipse Projekt 
werfen.

: Bearbeitet durch User
Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Holm T. schrieb:
> Bei ein paar Hundert Zeilen wird das zeitraubend und nervig.

Das verstehe ich jetzt auch nicht mehr.

Wenn Du einfach eine z.B. serial.c und serial.h hast, kannst Du die im 
Projekt in die Verzeichnisse src und inc einfügen bzw. mit Drag and Drop 
rein ziehen. Oder was meinst Du mit "existierende C-Quellen hinzufügen"?

Holm T. schrieb:
> Bibliothek Projekt als Referenz  Projekt
> angeben.
>
> ..und was genau tut das?

Nehmen wir an, all deine gesammelten Werke möchtest Du in einer mylib.a 
zusammen fassen, dann kannst Du eine library Projekt erstellen das dies 
übernimmt und dann dieses als Referenz angeben.
Dann wird bei der Änderung am library Projekt auch für das executable 
Projekt immer die aktuelle Version deiner Lib Dateien verwendet.

Autor: Johannes S. (jojos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hp-freund schrieb:
> Holm T. schrieb:
>> Bei ein paar Hundert Zeilen wird das zeitraubend und nervig.
>
> Das verstehe ich jetzt auch nicht mehr.

ich hoffe er meinte nicht die Dateien neu zu erzeugen und die Inhalte 
per copy & paste zu übertragen?

Autor: Holm Tiffe (holm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, mit der Drag&drop Geschichte muß ich mal experimentieren, ich nehme 
X11 im Wesentlichen als Terminalmultiplexer und operiere mit 
filemanagern etc kaum mal herum..ich werde das untersuchen.
anderes Problem:

Die von mir verwendete rfm12 Bibliothek von "Das Labor" benutzt aus 
meiner Sicht ein Unart wie diese hier:

rfm12.c:
/*
 * include extra features here
 * all of the stuff in there is optional, so there's no code-bloat..
*/
#include "include/rfm12_extra.c"

Wobei das dieses enthaltende File rfm12.c in einem Diretory src neben 
include liegt.
Eclipse hat sich die Directorystruktur angeguckt und ist der Meinung das 
es eine gute Idee wäre erst mal in include das File rfm12_extra.c in ein 
Objekt zu übersetzen..was schief geht, weil in rfm12.c header reingeholt 
werden die rfm12_extra.c benötigt.
Wie erkläre ich Eclipse das es die Finger von rfm12_extra.c lassen und 
nur dessen Code beim Übersetzen von rfm12.c mit dem Präprozessor 
reinholen soll?

Ich halte diese Struktur für doof, eine Library funktioniert aus meiner 
Sicht anders, hier aber gibt es einen three mit sourcen der nur über 
includes hereingholt wird..und das Ganze wird dann Library 
genannt...nicht meine Idee.

Edit: Drag&Drop funktioniert so nicht.

Gruß,

Holm

: Bearbeitet durch User
Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ja, include von .c Datei...

Aber gut, geh auf die .c mit der rechten Maustaste
 -> Properties -> C/C++ Build -> Exclude resource from build
dann wird diese ignoriert.

Autor: Holm Tiffe (holm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes S. schrieb:
> hp-freund schrieb:
>> Holm T. schrieb:
>>> Bei ein paar Hundert Zeilen wird das zeitraubend und nervig.
>>
>> Das verstehe ich jetzt auch nicht mehr.
>
> ich hoffe er meinte nicht die Dateien neu zu erzeugen und die Inhalte
> per copy & paste zu übertragen?

Doch, meinte Er.

Also noch mal:

Ich mache ein neues C Projekt mit einer Datei main.c und einer main.h.

In einem anderen nicht Eclipse Projekt liegen 2 Dateien uart.h und 
uart.c und diese möchte ich nun nachträglich dem Projekt main 
hinzufügen, weil ich plötzlich eine Uart für Debugging Ausgaben brauche.

Eclipse hat das uart Directory nicht unterhalb seines Projektordners, 
also erzählt mal bitte einem Doofen wie genau man die da "hineinzieht" 
ohne die Files neu zu erzeugen (mit Eclipse) und den Inhalt da rein zu 
kopieren.

Gruß,

Holm

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uart.h mit zu main.h ins Verzeichnis
uart.c mit zu main.c ins Verzeichnis

falls alle in einem Verzeichnis liegen, einfach die beiden dazu.

Autor: Holm Tiffe (holm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das verstehe ich unter drag&drop.. aber eclipse sieht kein uart.c 
und uart.h das ich draggen könnte, da es innerhalb des Eclipse 
Workspaces kein Directory gibt das diese Files enthält.

Gruß,

Holm

: Bearbeitet durch User
Autor: Holm Tiffe (holm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hp-freund schrieb:
> Na ja, include von .c Datei...

..ja eben. Die Header funktionieren aber genau so komisch...
>
> Aber gut, geh auf die .c mit der rechten Maustaste
>  -> Properties -> C/C++ Build -> Exclude resource from build
> dann wird diese ignoriert.

Danke, ich probiere es aus.

Gruß,

Holm

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Holm T. schrieb:
> da es innerhalb des Eclipse

Sind ja auch noch nicht drin. Zieh sie über einen Dateimanager rein.

Ausser Du hast sie schon ausserhalb eclipse rein kopiert, dann mit F5 
Ansicht aktualisieren.

Autor: Holm Tiffe (holm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hp-freund schrieb:
> Holm T. schrieb:
>> da es innerhalb des Eclipse
>
> Sind ja auch noch nicht drin. Zieh sie über einen Dateimanager rein.

..eben das hat nicht funktioniert...das zieht sich wieder zurück :-)
Dateimanager ist hier dieses mate-ding, kann mir nicht merken wie das 
heißt.
Machst Du das unter Windows?

>
> Ausser Du hast sie schon ausserhalb eclipse rein kopiert, dann mit F5
> Ansicht aktualisieren.

Mal sehen.
Neuigkeit dazwischen: Ich habs geschafft ein Binary zu erzeugen, echt ne 
schwere Geburt..mit klick-war-games... (wobei das natürlich an zum 
großen Teil an dieser "Bibliotheksstruktur" liegt....)

Gruß,

Holm

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
File->Import->FileSystem

dann Directory aussuchen, anwählen und die Dateien kopieren, die man im 
Projekt haben möchte.

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Holm T. schrieb:
> Machst Du das unter Windows?

Nein. Linux.

Holm T. schrieb:
> das zieht sich wieder zurück

Rechte? Nicht getroffen?

Holm T. schrieb:
> wobei das natürlich an zum
> großen Teil an dieser "Bibliotheksstruktur" liegt....

Wird es sein. Normalerweise kein grosses Ding.

Autor: Holm Tiffe (holm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pete K. schrieb:
> File->Import->FileSystem
>
> dann Directory aussuchen, anwählen und die Dateien kopieren, die man im
> Projekt haben möchte.

Danke Pete!

Genau das ist es was ich von Anfang an wissen wollte..allerdings kauft 
Eclipse auch scheinbar irgendwie aufgefundene Files auf...

Mir fehlt da noch die Übung.
Drag & Drop funktioniert auch ..wenn man es auf den Projektnamen fallen 
läßt... :-)


Ich habe das Kompilat nun auch auf eine Hardware "geavrduded" und 
freundlicherweise verhält sich das genaus wie das mit make program 
erzeugte Ergebnis :-)

Ein Problem hatte ich dabei aber noch: Die AVRdude Mimik wollte 
unbedingt ein $Prokectname.hex an avrdude übergeben..was nicht 
existierte, es gab aber .elf file dasdieser eignetlich auch begreifen 
müßte.
Ich habe irgendwann die Radiobuttons zum erzeugen des hex files für 
eerpom und flash gefunden, damit ging auch das programmieren..aber ich 
habe nicht gefunden wo man die avrdudemimik auf .elf umstellt..dabei bin 
ich die Dialoge mehrfach durch. Tomaten auf den Augen?

Gruß,

Holm

: Bearbeitet durch User
Autor: Johannes S. (jojos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Holm T. schrieb:
> Ein Problem hatte ich dabei aber noch: Die AVRdude Mimik wollte
> unbedingt ein $Prokectname.hex an avrdude übergeben..was nicht
> existierte

das .hex kann man auch im make oder post-build step mit 'objcopy' und 
den passenden Parametern erstellen lassen.

: Bearbeitet durch User
Autor: Holm Tiffe (holm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja,, das habe ich ja im Endeffekt mit den beiden Radiobuttons (Flash und 
EEPROM Hexfile generieren) getan..die Frage ist andersrum..wie stelle 
ich an der AVRdude Mimik ein das dort kein .hex erwartet wird?

Aus dem avrdude Manual:

"Provided libelf(3) was present when compiling avrdude, the input file 
can
 also be the final ELF file as produced by the linker.  The appropriate
 ELF section(s) will be examined, according to the memory area to write
 to."

Ergo müßte auch .elf gehen und der avrdude sammelt sich die 
interessanten Sections selbst raus...aber wo wird das script für den 
avrdude entsprechend generiert? Ich würde ggf. es gerne anpassen..

Gruß,

Holm

: Bearbeitet durch User

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.

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