Forum: Mikrocontroller und Digitale Elektronik Wie kann man ein makefile einbinden?


von Marcel K. (viewer)


Lesenswert?

Hallo liebes Forum. Ich hab mal wieder ein Problem und wende mich 
vertrauenswürdig an euch :o)
Es geht darum, dass ich ein Beispielcode ausprobieren möchte. (es 
handelt sich um ein LUFA Projekt) Bei diesem Beispiel ist auch ein 
makefile dabei. Wenn ich das ganze in WINAVR kompiliere, dann bekomme 
ich unter anderem die Fehlermeldung: „#error F_CLOCK is not defined“ Das 
zeigt mir, dass das dazugehörige makefile nicht beachtet wird. Ich habe 
es auch daran gemerkt, dass ich in den Projektproperties z.B. einen 
Mega16 eingestellt habe und dann den AT90USB1287 programmieren möchte. 
Klar, WINAVR erwartet einen MEGA16 und es ist aber ein AT90USB1287 am 
Dragon angeschlossen.
Jetzt wird allerdings im makefile der AT90USB1287 definiert. Auch 
„F_CLOCK“ ist dort definiert.
Wie kann ich den jetzt im Projekt auf das makefile zugreifen ohne die 
properties einzubinden? Gibt es irgendwo einen Pfad wo ich das 
einstellen muss oder muss irgendwo ein Häkchen gesetzt werden?
Ich wäre über eine Antwort sehr dankbar.

Viele Grüße,
Marcel

von Oliver (Gast)


Lesenswert?

Kannst du mal beschreiben, wo dein Problem ist?

WinAVR ist WinAVR ist WinAVR ist WinAVR. Nix anderes. Und es ist 
äusserst aufwendig, mit WinAVR ein lauffähiges Programm OHNE makefile zu 
erzeugen. Und ein "Projekt" ohne makefile gibt es gar nicht, 
genausowening wie die Möglichkeit, irgendwo Häkchen zu setzten.

Ein makefile nutzt man mit dem Befehl "make", der sich über die 
Kommandozeile oder über das Menu von PN aufrufen lässt.

Marcel K. schrieb:
> Wenn ich das ganze in WINAVR kompiliere,

Also: Was nutzt du tatsächlich, und wie genau kompilierst du?

Oliver

von Marcel K. (viewer)


Lesenswert?

Hallo und Danke für deine schnelle Antwort.

Also ich habe eine Beispielcode bei dem ein makefile dabei ist. In 
diesem makefile sind bestimmt Definitionen drin. (MCU = at90usb1287, 
F_CPU = 8000000, )Wenn ich das Projekt kompiliere dann bekomme ich z.B. 
folgende Fehlermeldungen:

#error F_CLOCK is not defined. You must define F_CLOCK to the frequency 
of the unprescaled input clock in your project makefile.

#error No PLL prescale value available for chosen F_CPU value and AVR 
model.

Das zeigt doch, dass beim kompilieren das makefiler nicht mit einbezogen 
wird, oder?

Wo gebe ich denn den Befehl „make“ ein? In welche Kommandozeile? Was 
heißt: „Menü von PN..“?

Danke und Grüße, Marcel

von Oliver (Gast)


Lesenswert?

Marcel K. schrieb:
> Wenn ich das Projekt kompiliere dann bekomme ich z.B.
> folgende Fehlermeldungen:

Man kann überahupt kein Projekt ohne makefile unter WinAVR kompilieren. 
(ok, man könnte schon, aber dazu braucht es vertiefte Kenntnisse).

Daher nochmals meine Frage:

Wie kompiliertst du? Was machst du dazu? Welches Programm startest du 
dafür? Wie genau nennt sich das? Was passiert dann?

Oliver

von Marcel K. (viewer)


Lesenswert?

In Eclipse gehe ich mit der Maus auf das Projekt, rechte Maustaste, 
Build Projekt. Dann kommen unten in der Konsole die erwähnten 
Fehlermeldungen.

Wenn ich mit der Kommandozeite (cmd) im heruntergeladene Beispiel make 
eingebe dann gehts allerdings auch nicht!

Ich denke ich stehe kommplet auf'm Schlauch!

Ich möchte doch einfach nur das Beispielprogramm mit Eclipse in den 
Controller laden. Dazu müssen die defines aus dem makefile halt mit in 
das Projekt eingebunden werden.

Oh je....

Danke Marcel

von Spassvogel (Gast)


Lesenswert?

Frag' mal einen Buchbinder Deines Vertrauens ;-)

Schönen Feiertag Euch allen!

von Oliver (Gast)


Lesenswert?

Marcel K. schrieb:
> Wenn ich das ganze in WINAVR

Marcel K. schrieb:
> In Eclipse gehe ich

Damit wäre das ja schonmal geklärt.

Es gibt jetzt zwei Möglicheiten: Du lernst Eclipse kennen, oder du 
lernst den Umgang mit makefiles kennen. Eins von beiden wird dir nicht 
erspart bleiben.

In Eclipse gibt es Projekt-Settings, erreichbar über die rechte 
Maustaste, in denen man alle erforderlichen Defines einstellen kann. 
Such mal etwas rum, dan wirst du alles finden. Auch die Taktfrequenz. 
Eclipse erstellt dann damit ein eigenes makefile.

Alternativ kannst du auch direkt make verwenden. make sucht das makefile 
im Ordner, in dem du es aufrufst. Wenn da keins ist, gibt es eine 
Fehlermeldung. Und die lautet in der Regel nicht:

Spassvogel schrieb:
> dann gehts allerdings auch nicht!

Oliver

von Marcel K. (viewer)


Lesenswert?

Hallo,
also wie man alles in Eclipse einstellt weiß ich ja. Ich arbeite damit 
schon länger!
Mein Problem ist jetzt wie ich die definitionen im makefile aus dem 
Beispiel in mein Projekt hinein bekomme. Wenn ich in Exlipse die 
Fehlermeldung:"#error F_CLOCK is not defined" bekomme, allerdings in den 
properties unter "Target Hardware" die 8MHz eingestellt habe, wo soll 
ich den "F_CLOCK" sonnst einstellen??

Grüße, Marcel

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Marcel K. schrieb:
> also wie man alles in Eclipse einstellt weiß ich ja. Ich arbeite damit
> schon länger!

Aber offensichtlich weißt du nicht was du tust, außer dumm rumklicken.

Entweder bekommst du deinen Arsch hoch und lernst wirklich Eclipse (und 
ein bisschen C-Programmierung kann dir auch nicht schaden) oder du 
lernst Makefiles.

von Marcel K. (viewer)


Lesenswert?

Wir reden aneinader vorbei, trotzdem danke!

schönen Abend noch....

von Oliver (Gast)


Lesenswert?

Marcel K. schrieb:
> Wir reden aneinader vorbei, trotzdem danke!

Sei mit nicht böse, es war gestern abend bestimmt schon spät, aber 
alles, was du geschrieben hast, ist halt völlig sinnfrei, und verwirrt 
nur. Es hilft nicht, von den falschen tools zu reden, und definenamen 
falsch wiederzugeben.

Marcel K. schrieb:
> Wenn ich das ganze in WINAVR

Marcel K. schrieb:
> In Eclipse gehe ich

Marcel K. schrieb:
> Also ich habe eine Beispielcode bei dem ein makefile dabei ist. In
> diesem makefile sind bestimmt Definitionen drin. (MCU = at90usb1287,
> F_CPU = 8000000, )Wenn ich das Projekt kompiliere dann bekomme ich z.B.
> folgende Fehlermeldungen:
>
> #error F_CLOCK is not defined. You must define F_CLOCK to the frequency
> of the unprescaled input clock in your project makefile.

F_CPU ist nicht F_CLOCK. Eclipse definiert ein F_CPU, F_CLOCK musst du 
selber in den Projekt-Settings definieren. Du weisst ja sicher, wo.

Marcel K. schrieb:
> WINAVR erwartet einen MEGA16 und es ist aber ein AT90USB1287 am
> Dragon angeschlossen.
> Jetzt wird allerdings im makefile der AT90USB1287 definiert.

Wenn du auch nur annähernd mehr als Null Projekte mit Eclipse und WinAVR 
erstellt hast, ist dieses Problem keins.

Oliver

von Marcel K. (viewer)


Lesenswert?

Guten Morgen, also ich versuch es noch mal.
Ich habe ein Beispeilprojekt. Dieses Beispielprojekt hat ein makefile. 
So, ich möchte dieses Beispielprogramm ausprobieren. Da ich allerdings 
mit Eclipse programmiere muss ich in Eclipse ein eigenes Projekt 
erstellen und dann das Beispielprogramm dort einbinden. Das heißt, ich 
muss in Eclipse unter Properties diese Einstellungen machen die im 
Beispielcode im makefile gemacht wurden. Soweit hab ich da ja auch 
verstanden. Das heißt für: „MCU = at90usb1287“ im makefile stelle ich in 
Eclipse unter Target Hardware „MCU Type = AT90USB1287“ ein. Soweit kein 
Problem. Jetzt kompiliere ich das ganze und bekomme mehrer 
Fehlermeldungen. Unter anderem auch diese:
#error F_CLOCK is not defined
So, das ist ja klar, da Eclipse nicht F_CLOCK, sonder F_CPU definiert. 
Jetzt möchte ich doch einfach nur wissen WO ich in den Projekt-settings 
„F_CLOCK 8000000“ definieren kann, so dass der Compiler und letztendlich 
ich natürlich zufrieden sind.
Gruß, Marcel

von Stefan E. (sternst)


Lesenswert?

Marcel K. schrieb:
> Ich habe ein Beispeilprojekt. Dieses Beispielprojekt hat ein makefile.
> So, ich möchte dieses Beispielprogramm ausprobieren. Da ich allerdings
> mit Eclipse programmiere muss ich in Eclipse ein eigenes Projekt
> erstellen und dann das Beispielprogramm dort einbinden. Das heißt, ich
> muss in Eclipse unter Properties diese Einstellungen machen die im
> Beispielcode im makefile gemacht wurden.

Nein, musst du nicht. Du kannst auch alternativ Eclipse einfach 
mitteilen, dass du ein eigenes Makefile verwenden möchtest, statt des 
von Eclipse generierten Makefiles. Ich habe auf diesem Rechner kein 
Eclipse, also kann ich dir jetzt nicht im Detail sagen, wo die 
entsprechende Einstellung ist, aber ...
> also wie man alles in Eclipse einstellt weiß ich ja. Ich arbeite damit
> schon länger!
... das solltest du dann ja wohl auch selber finden können.

von Marcel K. (viewer)


Lesenswert?

SUPER!!! Also ich habe es nach langem suchen endlich gefunden.

Für alle die es noch nicht wissen und gerne wissen möchten!!!

Einzelne Definitionen kann man unter:
C/C++ Build/Settings/Tool Settings/AVR Compiler/Symbols im Feld Define 
Syms (-D) eintragen. Dazu einfach das „Add“ klicken und dann das Define 
eingeben.

Möchte man ein komplettes makefile einbinden muss man unter:
C/C++ Build im Reiter Builder Settings den Hacken bei „Generate 
Makefiles automatically“ herausnehmen und dann den Pfad in „build 
directory“ eingeben.

Gruß Marcel

von Zuschauer (Gast)


Lesenswert?

Marcel K. schrieb:
> Möchte man ein komplettes makefile einbinden muss man unter:
> C/C++ Build im Reiter Builder Settings den Hacken bei „Generate
> Makefiles automatically“ herausnehmen und dann den Pfad in „build
> directory“ eingeben.

Des Rätsels Lösung, danke für die Rückmeldung.

von Oliver (Gast)


Lesenswert?

Marcel K. schrieb:
> also wie man alles in Eclipse einstellt weiß ich ja. Ich arbeite damit
> schon länger!

Marcel K. schrieb:
> SUPER!!! Also ich habe es nach langem suchen endlich gefunden.

alles ist anscheinend nicht alles ;-)

Oliver
P.S. Mit einer etwas präziseren Frage hättest du die passenden Antwort 
gleich im zweiten Beitrag bekommen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.