Forum: Compiler & IDEs Neue C dependencies


von Oryx (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von Jörg Wunsch (Gast)


Lesenswert?

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

von Oryx (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

@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

von Jörg Wunsch (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.