mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Übersetzungsversuche zählen Compiler


Autor: Jan H. (janiiix3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nabend,

Ist es möglich die Anzahl der Compilevorgänge zu zählen? Sprich wenn ich 
mit Atmel Studio jetzt ein Programm kompiliere das irgendwie in eine 
Variablen schreibe, die bleibt?

Autor: Achim S. (achs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst z.b. im makefile jeweils ein X an die Datei X.h hängen.

Das kannst Du mir auswerten, indem Du die Filegröße nimmst oder einen 
String daraus machst.

Wenn Du dich ein wenig mit Kommandozeilen auskennst, auch direkt die 
Zahl erhöhen und neu schreiben.

Autor: Axel Schwenke (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch wenn mir nicht klar ist, wozu das gut sein sollte, und vor allem 
auch, wie man "Anzahl Übersetzungsversuche" sinnvoll definieren würde - 
mit einer kleine Prise Shell-Magie geht das:
$echo 0 > foo
$cat foo
0

$make increment
$cat foo
1

$make increment
$cat foo
2

$cat Makefile 
increment:
        @echo $$(($$(cat foo)+1)) >foo

und wenn man mag, auch das noch:
$make show
2

$make increment
$make show
3

$cat Makefile 
increment:
        @echo $$(($$(cat foo)+1)) >foo

show:
        @cat foo

Autor: Kommandozeile vor dem Frühstück für Alle! (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Axel S. schrieb:
> Auch wenn mir nicht klar ist, wozu das gut sein sollte, und vor allem
> auch, wie man "Anzahl Übersetzungsversuche" sinnvoll definieren würde -
> mit einer kleine Prise Shell-Magie geht das:

Nun, das sind alles nur Buildvorgänge und da make mit von der Partie 
ist, kann es auch Durchgänge geben wo gar kein Compileraufruf getätigt 
wird...

Aber zu QA-Zwecke will ich es jeweils so haben dass mindestens zu den 
Formell wichtigen Builddurchläufe ("Release"-Kandidaten) eben auch 
getimestampte Buildlogs genauso zu den Buildartefakte (vulgo: binaries) 
gehören und mitarchiviert werden.
Also schreibe ich mir meine Makefiles so dass pro Durchlauf individuelle 
Namen für die Logdateien gezimmert werden.
Ja, ich habe jeweils viele "Müll"-Logdateien wegzulöschen, aber es ist 
immer aufschlussreich auch (genug) Logdateien zum auswerten zu haben 
(wurde tatsächlich auch ALLES kompiliert, was muss? Ist noch was dabei, 
was NICHT soll/darf? Wie ist der zeitliche/geschichtliche Verlauf der 
GRÖSSE der Binaries? ...der Kompiledauer? ...bei Variantenkompilation? 
u.v.a)

Mit CI/Build-&Testautomation braucht man halt auch passende Helferlein 
wie Jenkins und so.

Nein, sture prozedurale Builds welche sequentiell immer alles bauen sind 
nicht Alltagstauglich: make kann da viel Zeit sparen. Erst wenn in den 
Makefiles die Abhängikeiten korrekt UND vollständig erfasst sind kann 
die autom. Parallelisierung voll greifen und die vielen CPUs des 
Buildhosts simultan nutzen.

Autor: Alex Ge (dragongamer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denke mal er will einen automatischen "Build" counter wie es den häufig 
bei größerer (Desktop) Software gibt. Windows gibt den z.B. immer an.
Das macht aber in der Regel die Entwicklungsumgebung.

: Bearbeitet durch User
Autor: Kommandozeile vor dem Frühstück für Alle! (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das macht aber in der Regel die Entwicklungsumgebung.

Jagenau: das IST bei mir make - zumindest weitgehend :-P

Autor: Alex Ge (dragongamer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, in dem Fall wird man wohl um die "Shell Magic" nicht drum rum 
kommen, da make alleine dieses Feature ja nicht bietet.

EDIT: Du bist aber nicht der ursprüngliche Fragesteller. Er hat 
eigentlich garnicht gesagt womit er arbeitet.
Z.B bei Arduino dürfte es andere Möglichkeiten geben.

: Bearbeitet durch User
Autor: Arduino Fanboy (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex G. schrieb:
> Z.B bei Arduino dürfte es andere Möglichkeiten geben.
Hooks im Buildprozess.
https://github.com/arduino/Arduino/wiki/Arduino-ID...

: Bearbeitet durch User
Autor: Sheeva Plug (sheevaplug)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex G. schrieb:
> Denke mal er will einen automatischen "Build" counter wie es den häufig
> bei größerer (Desktop) Software gibt. Windows gibt den z.B. immer an.
> Das macht aber in der Regel die Entwicklungsumgebung.

Macht das nicht das Versionskontrollsystem?

Autor: (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Macht das nicht das Versionskontrollsystem?

Seit wann kuemmert sich das um Builds?
Zwischen Auschecken und Wiedereinchecken macht es nichts.

Autor: Sheeva Plug (sheevaplug)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#5263958:
> Sheeva P. schrieb:
>> Macht das nicht das Versionskontrollsystem?
>
> Seit wann kuemmert sich das um Builds?

Nicht Builds. Build Counter.

Autor: Axel Schwenke (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommandozeile vor dem Frühstück für Alle! schrieb:
> Axel S. schrieb:
>> Auch wenn mir nicht klar ist, wozu das gut sein sollte, und vor allem
>> auch, wie man "Anzahl Übersetzungsversuche" sinnvoll definieren würde -
>> mit einer kleine Prise Shell-Magie geht das:
>
> Nun, das sind alles nur Buildvorgänge und da make mit von der Partie
> ist, kann es auch Durchgänge geben wo gar kein Compileraufruf getätigt
> wird...

Ja. Eben. Mir ist nicht annähernd klar, wie man "Übersetzungsversuch" 
sinnvoll definieren würde. Und darum kann mein Vorschlag mit einem 
extra Target im Makefile auch komplett daneben liegen.

> Aber zu QA-Zwecke will ich es jeweils so haben dass mindestens zu den
> Formell wichtigen Builddurchläufe ("Release"-Kandidaten) eben auch
> getimestampte Buildlogs genauso zu den Buildartefakte (vulgo: binaries)
> gehören und mitarchiviert werden.

Meinetwegen. Zwei Punkte:

1. du bist nicht der TE, kannst also (m)eine Frage an ihn gar nicht 
beantworten.

2. deine Antwort hat auch nichts mit seiner Frage zu tun.

"Release Build" != "Übersetzungsversuch". Und um die Buildlogs zu 
benennen, braucht man i.d.R. auch keinen externen Zähler, da reicht ein 
Timestamp - wenn man nicht sowieso die Release-Nummer nehmen will, die 
man ja typischerweise sowohl im Quellcode als auch im VCS (z.B. in Form 
eines Tags) dokumentiert.

Wenn man dann vielleicht noch einen CI Prozeß hat, fallen Builds mit 
durchlaufender Nummerierung mitsamt den zugehörigen Build+Test Logs 
automatisch an.

> sture prozedurale Builds welche sequentiell immer alles bauen sind
> nicht Alltagstauglich: make kann da viel Zeit sparen.

Da bin ich ganz bei dir. Und ich würde gerne einem Gespräch lauschen, wo 
du das mit W.S. diskutierst ;)


Sheeva P. schrieb:
> (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im
> Beitrag
> #5263958:
>> Sheeva P. schrieb:
>>> Macht das nicht das Versionskontrollsystem?
>>
>> Seit wann kuemmert sich das um Builds?
>
> Nicht Builds. Build Counter.

Seit wann kümmert sich das VCS um Build Counter?

: Bearbeitet durch User
Autor: (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
> > Nicht Builds. Build Counter.

> Seit wann kümmert sich das VCS um Build Counter?

Ja, das ist nur rhetorisches Geplaenkel.
Das kannst du ignorieren.

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.

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