Hallo, mir ist aufgefallen das z.B Atmel Studio (evtl. auch andere Kompiler) die Headerdateien nicht jedes mal neu übersetzen / kompilieren. Kann man das in den Headerdateien irgendwie verankern? Der Kompiler soll jedes mal beim kompilieren, die Headers auch mit einbeziehen. Danke im Voraus.
Dafür sorgt das Programm "make" zusammen mit seiner Konfigurationsdatei "Makefile".
Ich denke mal du musst die Headerdateien speichern nachdem du Änderungen daran vorgenommen hast! Siehst du ja an dem "*" in den Registerkarten unten. Danach kompiliert AVR Studio die aktuellen Dateien. So klappt es jedenfalls bei mir.
@Jan H. (janiiix3) >mir ist aufgefallen das z.B Atmel Studio (evtl. auch andere Kompiler) >die Headerdateien nicht jedes mal neu übersetzen / kompilieren. Nö, die werden so oder so nur per #inlcude in einen Quelltext eingebunden. Und ALLEIN werden sie so oder so nicht compiliert. Was du vermutlich meinst ist die Fähigkeit der meisten Compiler/IDEs, die Abhängigkeiten einer Datei zu erkennen und dieser nur dann neu zu kompilieren, wenn sich eben diese Dateien geändert haben. >Kann man das in den Headerdateien irgendwie verankern? Nö, das macht der Compiler selber. >Der Kompiler soll jedes mal beim kompilieren, die Headers auch mit >einbeziehen. Das macht der schon, keine Sorge.
Falk B. schrieb: > @Jan H. (janiiix3) > >>mir ist aufgefallen das z.B Atmel Studio (evtl. auch andere Kompiler) >>die Headerdateien nicht jedes mal neu übersetzen / kompilieren. > > Nö, die werden so oder so nur per #inlcude in einen Quelltext > eingebunden. > Und ALLEIN werden sie so oder so nicht compiliert. > > Was du vermutlich meinst ist die Fähigkeit der meisten Compiler/IDEs, > die Abhängigkeiten einer Datei zu erkennen und dieser nur dann neu zu > kompilieren, wenn sich eben diese Dateien geändert haben. > >>Kann man das in den Headerdateien irgendwie verankern? > > Nö, das macht der Compiler selber. > >>Der Kompiler soll jedes mal beim kompilieren, die Headers auch mit >>einbeziehen. > > Das macht der schon, keine Sorge. Habe mich gewundert. Habe mit den Macros "__TIME__" & "__DATE__" die Zeit und das Datum gespeichert und wundere mich heute, wieso da noch das alte Datum drin steht, habe das Projekt neu kompiliert. Wollte eigentlich, wenn ich main() kompiliere, das dass aktuelle Datum drinn steht.
@Jan H. (janiiix3) >Wollte eigentlich, wenn ich main() kompiliere, das dass aktuelle Datum >drinn steht. Vermutlich mußt du dazu deinen Compiler neu starten und nicht wie bisher tagelang geöffnet lassen.
Falk B. schrieb: > @Jan H. (janiiix3) > >>Wollte eigentlich, wenn ich main() kompiliere, das dass aktuelle Datum >>drinn steht. > > Vermutlich mußt du dazu deinen Compiler neu starten und nicht wie bisher > tagelang geöffnet lassen. Sehr lustig Herr B.
Dann solltest du ein "make clean" machen... Also die betreffende *.o Datei entsorgen.
Jan H. schrieb: > Habe mit den Macros "__TIME__" & "__DATE__" die Zeit und das Datum > gespeichert Wo? Deine *.c-Datei wird nicht neu übersetzt, nur weil sich das Datum ändert. Solange sie aber nicht neu übersetzt wird, stehen natürlich in der erzeugten Objektdatei die Werte für _TIME__ und __DATE_ drin, die zum Zeitpunkt des letzten Übersetzens drinstanten. Diese beiden "Macros" kommen übrigens nicht aus einer Headerdatei, sondern sind eine eingebaute Funktion des Compilers.
Falk B. schrieb: > Ein einfaches clean + build all würde das Problem auch lösen ;-) Korrekt ;) Ich war als Anfänger auch verwirrt. Vor allem, weil nur nach dem abspeichern die Meckermeldung >#warning F_CPU not defined! kam. Bei erneutem kompilieren war das weg. Dadurch hatte ich herausgefunden, dass im Atmel-Studio nur neu kompiliert wird, wenn sich die Headerdatei auch geändert hat. Daher braucht dich das nicht weiter interessieren. Der Compiler macht das schon. Einfach auf kompilieren drücken und gut ist. Du brauchst also kein "clean" zu verwenden, außer du willst das explizit :)
Rudolfo schrieb: > Dadurch hatte ich herausgefunden, dass im Atmel-Studio nur neu > kompiliert wird, wenn sich die Headerdatei auch geändert hat. Das ist nicht nur im Atmel-Studio so, das ist generell so, wenn das Makefile vernünftig aufgebaut und die Headerdateien als Abhängigkeiten angegeben sind, dafür ist make schließlich da.
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.