Daten zur Kompilierzeit erzeugen
-
Guten Morgen,
ich habe folgendes Problem bzw. fehlt mir das Wissen.
Ich möchte für eine Software eine Art Versionierung programmieren, d.h. es wird beim Kompilieren eine Versionsnummer erzeugt die dann beim "flashen" der Hardware in einen festgelegten Speicher abgelegt wird.Meine Unwissenheit liegt nicht darin wie ich einen Wert dem Speicher zuordne,ich weiß eher nich wie man einen Wert zur Kompilierzeit entstehen lässt!?
Tipps und Links würden mir sehr helfen, vielen Dank
-
^^sowas ist oft ziemlich fummelig. das universellste wird's wohl sein: du machst dir ein kleines programm, das irgendwas in einer datei hochzählen kann (z.b. ein #define in einem .h-file, oder irgendwas binäres in einem .obj-file). dieses tool bindeste dann in deinen build-prozess mit ein, der compiler (und/oder linker) schnappt sich dann das 'hochgezählte etwas' und packt es in's endergebnis mit rein.
-
Ich will es mal so ausdrücken:
Es ist nicht vorteilhaft (in meinem Fall) ein "externes programm" bzw. ein weiteres Modul zu schreiben. An einem einfachen #define habe ich auch gedacht nur wie lasse ich den Wert erhöhen ohne zusätzliche Module?
-
Protaris schrieb:
...nur wie lasse ich den Wert erhöhen ohne zusätzliche Module?
dann wird dir wohl nichts anderes übrig bleiben, als deine 'build number' von hand hochzusetzen.
-
^^ach, mir dummerchen ist noch was entgangen: du könntest ein versionskontrollsystem benutzen, CVS oder so. das kann dir auch konstanten (versions/build nummer usw) in den code reinsetzen.
-
+fricky schrieb:
^^ach, mir dummerchen ist noch was entgangen: du könntest ein versionskontrollsystem benutzen, CVS oder so. das kann dir auch konstanten (versions/build nummer usw) in den code reinsetzen.
Da kenne ich mich null aus, aber bräuchte ich nicht hierfür ein Modul? Etwas muss ja die Versionsnummer holen?! Aber ich lasse mich gerne vom Gegenteil überzeugenAber interessenshalber würde ich mir gerne so etwas anschauen, hat jemand einen Link dazu (Beispiel, Tutorial etc.?
-
sowas gibts auch schon fertig: http://www.blackswansystems.co.uk/index.php?page=downloads
-
Wenn ich mich nicht ganz irre, habe ich bei etlichen IDEs die Möglichkeit, Versionierung als Ressource zulinken zu lassen, die meisten von denen können zumindest den Build automatisch hochzählen.
Damit wär' doch wahrscheinlich was anzufangen.
-
Danke für die Antworten, habe mir jedoch eine Alternative ausgedacht.
Ich werde ein batchfile nutzen, das mir beim precompilieren die Systemzeit in einem Header schreibt den rest gebe ich mit der hand ein.
-
Protaris schrieb:
Danke für die Antworten, habe mir jedoch eine Alternative ausgedacht.
Ich werde ein batchfile nutzen, das mir beim precompilieren die Systemzeit in einem Header schreibt den rest gebe ich mit der hand ein.
Für die Systemzeit/datum gibt es doch Compiler Makros. Da benötigst du kein batchfile (__TIME__, __DATE__, wenn ich mich nicht irre). Ansonsten mache ich das für meine Anwendungen genau so wie +fricky das bereits geschrieben hat. In all meinen Programmen gibt es eine Datei version.h. Dort ist eine Versionsnummer hinterlegt. Mein Zusatzprogramm wird von der Compilerinternen "Linker Vorstufe" (VS60) oder auch "Prälinkereignis" (VS2005) ausgeführt und erhöht die Versionsnummer, je nach definierten Syntax.
-
..... schrieb:
Da benötigst du kein batchfile (__TIME__, __DATE__, wenn ich mich nicht irre).
Vielen Dank, habe die Compiler makros ganz ausser acht gelassen