www.mikrocontroller.net

Forum: Compiler & IDEs Neue C dependencies


Autor: Oryx (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Oryx (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.