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?
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)
Wie wäre es z.B. mit diesem Workaround: https://mcuoneclipse.com/2015/03/29/solving-the-8192-character-command-line-limit-on-windows/
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.
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.
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...
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.
Hallo Peter, an diese Möglichkeit habe ich auch schon gedacht. Ich bin noch nicht fündig geworden :-(.
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.
vielleicht sollten die Eclipse- Schreiber mal mit make -f Makefile arbeiten anstatt alles in der Kommandozeile zu übergeben.
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"
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 ;-)
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 :-)
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.
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.
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..
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.