Hallo, hat sich schon mal jemand mit den neuen C dependencies beschäftigt? Wie unter WinAVR/sample im makefile beschrieben und in mfile verwendet. Ich habe das ganze einmal ausprobiert und läuft auch. Allerdings habe ich einige Tücken: a) die dependencies werden nur beim Kompilerlauf erzeugt, haben also keine eigenen Abhängigkeiten. Sie werden nach einem löschen also nicht neu erstellt. b) Kann ich die dependencies in ein völlig anderes Verzeichnis als meinen Quellcode bekommen. z.B C:/obj/.dep und den Quellcode in C:/scr c) Sollte das ganze auch davon Abhängig sein, das die ganzen object files auch im Quellcode Verzeichnis liegen? Die object files sollten im Verzeichniss C:/obj liegen. d) Wie kann das ganze funktionieren, wenn sich die Quellcodedateien für ein Projekt in unterschiedlichen Verzeichnissen befinden. Ansonsten scheint mir die Variante mit sed "übersichtlicher". Die Parameter sind zwar ein Hammer, aber man hat klare Ein- und Ausgangsdateien. Evtl. hat ja jemand einen kurzen Konzeptbericht. Ich kann nicht nachvollziehen, was bei GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d passieren soll. Ich weiss, es zwingt mich ja niemand, auf sed zu verzichten. Aber ich habe mich nun mal mit einem anderen Ansatz beschäftig. Diesen möchte ich dann auch so einigermassen verstehen. Was an hinterher einsetzt ist eine ganz andere Frage. Oryx
Wieviele Millionen Quelltextzeilen hast Du denn so, daß es sich lohnt Abhängigkeiten aufzustellen ? Ich kompiliere immer alles komplett neu: avr-gcc.exe *.c und brauchte mich daher noch nie mit "make", "sed" usw. zu beschäftigen. Peter
Wenn's Dir Spaß macht, kannst Du doch gern die sed-Variante benutzen. Die Variante über den GCC-Automatismus war wohl von Eric als ``plug&play'' Winuser-tauglich gedacht (d. h. er hatte sie aus der gccembedded Mailingliste, glaube ich). Man kann das sicher noch tunen, aber eigentlich ist mir die Mimik schon zu verwurschtelt, als daß ich mir das antun würde. ;-) Wenn Du von Mfile die Unix-Variante benutzt (die sich ja nur im makefile_template unterscheidet), bekommst Du etwas, was weniger ``plug & play & hope it works'' ist, sondern mehr benutzergesteuert. Erstens hast Du paar Gimmicks in Form irgendwelcher überflüssiger Ausschriften nicht mehr drin, die eigentlich nur ein altes AVR Studio 3 gebraucht hat, weil sie zu faul waren, den exit status von `make' richtig zu testen und stattdessen irgendwelche magic strings verglichen haben. Zweitens werden bestimmte Dinge wie die Ausgabe der Programmgröße nicht mehr vorgenommen (wofür auch? wenn ich das brauche, kann ich ja ``avr-size -A ...'' selbst eintippen). Schließlich gibt's keine automatischen Abhängigkeiten mehr, sondern stattdessen ``the Unix way'': wenn die Abhängigkeiten neu erstellt werden sollen, tippt man `make depend' ein, und dann werden diese einfach ans Makefile hinten drangehängt (ggf. dort existierende werden zuvor gelöscht). Typischerweise weiß ich als Autor am besten, wann ich das wirklich brauche und wann nicht (oder ob ich gar keine dependencies erst brauche, sondern `make clean all' eintippen kann, um einfach alles neu zu bauen).
Hallo, @Peter: Sei dankbar! Ich habe: 100 Dateien /ohne H-Dateien 5 Verzeichnisse 3 verschiedene Controller 1 PC/Windows 7 Projekte, die teilweise den gleichen Quellcode nutzen Kompilierzeit ca. 3 Minuten, beim grössten Projekt Soweit zum Thema, macht make Sinn. @Jörg Vielen Dank für deine Ausführung. Der Ausdruck "verwurschtelt" ist wohl treffend. Ich werde bei meiner sed-Lösung bleiben. Oryx
@Oryx, "Kompilierzeit ca. 3 Minuten, beim grössten Projekt" Mein größtes Projekt auf einem MC hatte bisher nur 27 C-Files (10.000 Zeilen) und braucht komplett 12s (1.2GHZ PC). Deshalb hatte ich noch nie das Bedürfnis daran was zu optimieren. Ich kenne allerding unsere Windows C++ Programierer, die immer viel rauchen und Kaffee trinken, die erzählen dann was von 30min und länger. Peter
Visualklickplusplus. :-) C++ braucht aber in der Tat u. U. deutlich länger zum Compilieren, auch einen GCC kann man damit gut ins Schwitzen 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.