Forum: Mikrocontroller und Digitale Elektronik Eclipse generate Makefile


von EL (Gast)


Lesenswert?

Hallo zusammen,

An folgendem Problem beisse ich mir gerade die Zähne aus.

Ich arbeite mit Eclipse und benutze den gcc compiler inkl gcc build 
tools.

Aufgrund dessen, dass ich mit Windows arbeite/n (muss), muss ich 
eingriffe in das generierte Makefile machen. Der Linkeraufruf ist 
einfach zu lang für Windows und ich muss deshalb mit einer Datei 
arbeiten in der ich alle Objectfiles an den Linker übergebe.

Jetzt bin ich allerdings in der Situation, dass ich die automatisch 
generierten Makefiles natürlich
nicht einfach so nutzen kann. Denn wenn das Makefile von Eclipse 
generiert wird, ist das Kind ja schon in den Brunnen
gefallen.

Ich finde die automatische Erstellung des Makefiles aber wirklich sehr 
angenehm und würde das gerne so beibehalten
ohne ständig daran herrumfummeln zu müssen. Ich finde es wirklich gut, 
dass ich mich um nichts weiter kümmern muss als in eclipse ein neues 
Modul zu inkludieren und aus diesen einstellungen
sofort ein makefile zu bekommen. Auch solche dinge wie bei einzelnen *.c 
"exclude from source" wäre mit einem
selbst erstellten makefile mehr arbeit ?! oder?!

Ein weiterer Punkt ist, dass ich mich einfach nicht so gut mit Makefiles 
auskenne um mir ein
vernünftiges selbst zu schreiben :-(. Vielleicht muss ich mich damit 
beschäftigen?

Kommt man irgendwie an das Eclpise template ran?

von Schnips (Gast)


Lesenswert?

Vielleicht stellst Du eine so spezielle Frage lieber
in einem Eclipse-Forum.

Ansonsten: Eclipse ist Open Source.
In diesem Fall findest Du die Lösung wahrscheinlich in CDT (C 
development tooling)

von Andre R. (physicist)


Lesenswert?


von EL (Gast)


Lesenswert?

Ich kenne das Workaround und nutze es schon.

Die Grenze von 8192 Zeichen ist für Commandline Calls.

Es gibt aber eine generelle Grenze von 31k für Parameterlängen in 
Windows... Eclipse übergibt den Linkerstring an die Buildtools (sh-shell 
und make)

31k hört sich nach enorm viel an aber mit ext. software hat man schnell 
mehrere hundert files die in verschachtelten Pfaden liegen.

von 900ss (900ss)


Lesenswert?

EL schrieb:
> Ich kenne das Workaround und nutze es schon.

Nö, da steht auch, dass einen großen Teil der Sourcen in eine Library 
stecken kannst. Dann wird nur noch dieser Libraryname dem Linker 
übergeben. Beim bauen der Lib must du natürlich auch aufpassen, dass du 
nicht zuviele Source in eine Lib packst.

Du könntest dir auch manuell ein Makefile erstellen und in Eclipse dann 
ein Makefile-Projekt nutzen anstatt ein von Eclipse verwalteten 
Makefile.

von EL (Gast)


Lesenswert?

900ss D. schrieb:
> EL schrieb:
>> Ich kenne das Workaround und nutze es schon.
>
> Nö, da steht auch, dass einen großen Teil der Sourcen in eine Library
> stecken kannst. Dann wird nur noch dieser Libraryname dem Linker
> übergeben. Beim bauen der Lib must du natürlich auch aufpassen, dass du
> nicht zuviele Source in eine Lib packst.
>

Ich habe bereits externe grafik libs die dieses limit sprengen.


> Du könntest dir auch manuell ein Makefile erstellen und in Eclipse dann
> ein Makefile-Projekt nutzen anstatt ein von Eclipse verwalteten
> Makefile.

Ja, Ich fürchte daran komme ich nicht vorbei...

von Peter II (Gast)


Lesenswert?

EL schrieb:
> Ja, Ich fürchte daran komme ich nicht vorbei...

kannst du zwischen Erstellung des Makefiles und aufruf vom Make noch 
andere Programm starten?
Dann könnte man dort das Makefile manipulieren.

von EL (Gast)


Lesenswert?

Hallo Peter,

an diese Möglichkeit habe ich auch schon gedacht. Ich bin noch nicht 
fündig geworden :-(.

von Peter II (Gast)


Lesenswert?

EL schrieb:
> an diese Möglichkeit habe ich auch schon gedacht. Ich bin noch nicht
> fündig geworden :-(.

im Notfall die Make.exe austauschen gegen ein eigenes Programm, was dann 
das make aufruft.

von Martin (Gast)


Lesenswert?

vielleicht sollten   die Eclipse- Schreiber
mal  mit  make -f Makefile
arbeiten anstatt  alles in der Kommandozeile zu übergeben.

von Peter II (Gast)


Lesenswert?

Martin schrieb:
> vielleicht sollten   die Eclipse- Schreiber
> mal  mit  make -f Makefile
> arbeiten anstatt  alles in der Kommandozeile zu übergeben.

du hast das Problem leider nicht verstanden.

Das Problem ist nicht auf aufruf vom Make sondern der aufruf vom linker 
vom make aus.

Hier die Vorgeschichte:
Beitrag "CMD Limit unter Windows GCC-Linkeraufruf"

von EL (Gast)


Lesenswert?

Hallo nochmal...

ich habs jetzt tatsächlich geschaft. Der Generator läuft wie Peter 
vermutet hat vor dem start von make.

Es besteht tatsächlich die möglichkeit statt make ein anderes Programm 
oder ein Script starten zu lassen. Das Makefile ist zu diesem Zeitpunkt 
schon fertig.

Jetzt läuft das bei mir über Python. Erst das makefile ändern, dann
make anwerfen.

Danke nochmal. Vorallem an PeterII ;-)

von EL (Gast)


Lesenswert?

Ich habe es also geschaft mich darum zu drücken makefiles selbst zu 
schreiben :-) Das holt mich irgendwann wieder ein... da bin ich mir 
ziemlich sicher :-)

von DerDan (Gast)


Lesenswert?

Theoretisch ist das erzeugen deines Projekts auch vom makefile selber 
abhängig. Wenn dann jedes Mal eine neues generiert wird müssen ja alle 
Quelle übersetzt werden.
Wenn du schon eigene makefiles generieren willst, solltest du vielleicht 
cmake https://cmake.org/ in Betracht ziehen.

Von einer IDE (egal von welcher) generierte make files habe immer 
Schwierigkeiten damit eigene Erweiterungen einzubauen. Z.B. statische 
Code Analyse, Doxgen Dokumentation generieren, komplettes Release gleich 
noch zippen und per mail versenden oder per FTP hochladen oder auch nur 
im HexFile eine Checksumme einzutragen.

Deshalb will ich wieder weg von den IDE’s die den Build Prozess selber 
steuern.

von Peter II (Gast)


Lesenswert?

DerDan schrieb:
> Theoretisch ist das erzeugen deines Projekts auch vom makefile selber
> abhängig. Wenn dann jedes Mal eine neues generiert wird müssen ja alle
> Quelle übersetzt werden.

schein in der Praxis aber nicht so zu sein. Das müsste man extra als 
Abhängigkeit hinzufügen.

von Bernd K. (prof7bit)


Lesenswert?

DerDan schrieb:
> Deshalb will ich wieder weg von den IDE’s die den Build Prozess selber
> steuern.

Du musst deswegen nicht weg von der IDE. Du kannst auch einfach das 
Generieren des Makefiles abschalten und stattdessen Dein eigenes 
Makefile oder eigenes Buildsystem oder Script verwenden. Eclipse kann 
den Build-output dann trotzdem noch parsen und dann daraus die ganzen 
Include-Pfade und defines ableiten die es braucht für ein Code-Assist 
ohne rote Wellenlinien..

von DerDan (Gast)


Lesenswert?

Mein Aussage bezog sich nicht auf Eclipse, ich arbeite auch noch mit IAR 
embedded Workbench und AtmelStudio.

mfg

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.