ubuntuusers.de

Build-Zeit in C++ Code eincompilieren

Status: Ungelöst | Ubuntu-Version: Ubuntu 23.04 (Lunar Lobster)
Antworten |

TheIntruder

Avatar von TheIntruder

Anmeldungsdatum:
26. Juni 2011

Beiträge: 205

Hallo. Ich habe folgendes Problem. Ich möchte, dass meine Build-Routine in VS2013 die aktuelle Zeit in long ermittelt. Diese soll dann in eine Resoure-Datei eingetragen werden.

Es geht in diesem Kontext um eine Versionsnummer. Diese soll defacto der Zeitstempel sein von dem Zeitpunkt, an dem der Build des C++-Artefaktes durchgeführt wurde. Wenn der Build also zum Zeitpunkt 912311231231 angestoßen wurde, dann soll die Build-Nummer später auf diese Zahl gesetzt werden.

Wie lässt sich das bewerkstelligen?

Gruß

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6489

Wohnort: Hamburg

Ich hatte früher mal so eine ähnliche Idee. Das sah dann im Makefile etwa so aus:

...
CXXFLAGS = $(shell fltk-config  --use-images --cxxflags ) -Wall -DSPELLCK -DDATE="\"`date +%Y-%m-%d`\""
...

Siehe -DDATE. Kann man natürlich auch anders formatieren. Ich habe das aber wieder ausgebaut.

Man hat mich darauf aufmerksam gemacht, dass eine erneute Übersetzung eines ungeänderten Quelltextes bitidentische Ergebnisse liefern sollte, was mit dieser Methode nicht der Fall ist.

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17521

Abgesehen davon: Nimm lieber den commit hash von git anstatt der Uhrzeit, so hat man auch eine Referenz zur Herkunft des Releases.

TheIntruder

(Themenstarter)
Avatar von TheIntruder

Anmeldungsdatum:
26. Juni 2011

Beiträge: 205

Leider gibt es von diesem Sourcecode keinen commit-hash. Frag nicht, ich finde das auch nicht toll. Deine Idee, Dakuan, scheint mir aber die richtige zu sein. Ich werde sie mal versuchen.

Danke.

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6489

Wohnort: Hamburg

Wenn der Build also zum Zeitpunkt 912311231231 angestoßen wurde ...

Wow

manfred@samurai:~$ date --date='@912311231231' +%Y-%m-%d_%H:%m:%M
30879-12-28_19:12:27
manfred@samurai:~$ 

Du hast aber einen strengen Zeitplan!

Leider gibt es von diesem Sourcecode keinen commit-hash.

Man könnte vielleicht auch das letzte Veränderungsdatum des Entwicklungsverzeichnisses heranziehen. Also als "default" Wert und/oder an den Rechnernamen gebunden. So dass er in anderen Umgebungen nicht aktualisiert werden kann. Da liesse sich bestimmte etwas machen. Aber braucht man das wirklich?

Femtom

Anmeldungsdatum:
21. November 2022

Beiträge: 105

Für solche Fälle gibt auch Präprozessormakros:

__TIMESTAMP__
__DATE__
__TIME__

Das Format müsste man noch umwandeln, wenn es Unix-Zeit sein muss.

Antworten |