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