Automatisches Datum und Version im Sourcecode
Hallo, gibt es eine Möglichkeit, automatisch das Datum der Compilierung und eine Versionsnummer beim compilieren zu erzeugen? Viele Grüße Bastian
Bastian Schern schrieb:
Hallo,
gibt es eine Möglichkeit, automatisch das Datum der Compilierung und eine Versionsnummer beim compilieren zu erzeugen?
Viele Grüße Bastian
Wie wäre es mit RCS? Ist zwar "veraltet", aber ich finde es praktischer als die CVS-Labels. Läßt sich auch gut im Makefile integrieren und läuft schön lokal. CU Dierk -- // Dierk Froehling // aycan Digitalsysteme GmbH // Innere Aumuehlstr. 5 // 97076 Wuerzburg // Germany // phone: +49 (0)931 2 70 40 9-0 // fax: +49 (0)931 2 70 40 9-1 // http://www.aycan.de
On Tuesday 09 September 2003 10:56, Bastian Schern wrote:
gibt es eine Möglichkeit, automatisch das Datum der Compilierung und eine Versionsnummer beim compilieren zu erzeugen?
Für das Compile-Datum gibt es __DATE__ als vordefiniertes Präprozessormakro,
für die Versionsnummer kannst Du per CVS oder RCS "$Id$" verwenden. Du mußt
das allerdings an eine statische Variable zuweisen, damit das auch
tatsächlich im Code landet:
static const char compile_date[] = __DATE__;
static const char version[] = "$Id";
CU
--
Stefan Hundhammer
dfroehling schrieb: [...]
Wie wäre es mit RCS? Ist zwar "veraltet", aber ich finde es praktischer als die CVS-Labels. Läßt sich auch gut im Makefile integrieren und läuft schön lokal.
Gibt es keine Möglichkeit die Ausgabe von "date" in das Makefile zu integrieren? Ich möchte ja auch das jedes mal, wenn ich make eingebe ein Build-Zähler hoch zählt und zusätzlich das Datum verwendet verwendet wird. Viele Grüße Bastian
On Tuesday 09 September 2003 11:07, dfroehling wrote:
Wie wäre es mit RCS? Ist zwar "veraltet", aber ich finde es praktischer als die CVS-Labels. Läßt sich auch gut im Makefile integrieren und läuft schön lokal.
Was ist an den "$xy$"-Dingern bei RCS anders als bei CVS? CVS hat mehr davon;
man kann sich dafür entscheiden, was einem besser gefällt.
Daß "make" bei RCS manchmal automatisch auscheckt (wenn es im Repository etwas
Neueres gibt), ist in der Praxis oftmals weniger gut, als man zunächst
annimmt: Da muß ein Team schon sehr gut zusammenarbeiten und garantiert immer
funktionierenden Code einchecken, damit es da nicht ständig kracht.
Ich kenne das, wir haben das in der alten Firma (vor SuSE) auch gemacht - und
oft genug gekreischt, wenn es dann doch nicht geklappt hat.
Bei CVS macht man selber aktiv "cvs up", wenn man dafür bereit ist. Das hat
sich für mich besser bewährt als das automatische Auschecken aus dem RCS,
wann immer jemand anders irgendwas eingecheckt hat - vor allem, wenn es ein
grundlegendes Header-File ist, und dann wird die ganze Welt neu compiliert.
;-)
CU
--
Stefan Hundhammer
Stefan Hundhammer schrieb:
On Tuesday 09 September 2003 11:07, dfroehling wrote:
Wie wäre es mit RCS? Ist zwar "veraltet", aber ich finde es praktischer als die CVS-Labels. Läßt sich auch gut im Makefile integrieren und läuft schön lokal.
Was ist an den "$xy$"-Dingern bei RCS anders als bei CVS? CVS hat mehr davon; man kann sich dafür entscheiden, was einem besser gefällt.
Irgendwie habe ich (alte Firma) die Umstellung von RCS auf CVS in schlechter Erinnerung. Die Versionsnummern gingen Flöten, ... es lief zumindest anfangs drauf raus, daß man viel von Hand machen mußte, was beim RCS schön automatisiert war. :-(
Daß "make" bei RCS manchmal automatisch auscheckt (wenn es im Repository etwas Neueres gibt), ist in der Praxis oftmals weniger gut, als man zunächst annimmt: Da muß ein Team schon sehr gut zusammenarbeiten und garantiert immer funktionierenden Code einchecken, damit es da nicht ständig kracht.
Deswegen hatte ich auch geschrieben "lokal". Es ist auf einem Rechner und möglichst nur einer hat auf diese speziellen Dateien Schreibzugriff. Und die ursprüngliche Frage war ja auch: automatisch beim Compilieren.
Ich kenne das, wir haben das in der alten Firma (vor SuSE) auch gemacht - und oft genug gekreischt, wenn es dann doch nicht geklappt hat.
Wie gesagt: chaotische Umstellung. Dann ist auch noch der CVS-Server ohne Backup abgeschmiert. Da habe ich doch lieber meinen Kram in meinem Verantwortungsbereich auf dem Rechner. Da bin ich für mein Backup zuständig...
Bei CVS macht man selber aktiv "cvs up", wenn man dafür bereit ist. Das hat sich für mich besser bewährt als das automatische Auschecken aus dem RCS, wann immer jemand anders irgendwas eingecheckt hat - vor allem, wenn es ein grundlegendes Header-File ist, und dann wird die ganze Welt neu compiliert. ;-)
Hängt eben vom Einzelfall ab. Wenn man das System neu einführt, dann ist es auch einfacher als ein Systemwechsel. Und RCS ist auch schneller eingerichtet als CVS. ;-) Aber es ist schon richtig: Für Teamwork und mit einem ordentlichen CVS-Server, der regelmäßige Backups macht ist CVS besser. CU -- // Dierk Froehling // aycan Digitalsysteme GmbH // Innere Aumuehlstr. 5 // 97076 Wuerzburg // Germany // phone: +49 (0)931 2 70 40 9-0 // fax: +49 (0)931 2 70 40 9-1 // http://www.aycan.de
Stefan Hundhammer schrieb: [...]
Für das Compile-Datum gibt es __DATE__ als vordefiniertes Präprozessormakro, für die Versionsnummer kannst Du per CVS oder RCS "$Id$" verwenden. Du mußt das allerdings an eine statische Variable zuweisen, damit das auch tatsächlich im Code landet:
static const char compile_date[] = __DATE__; static const char version[] = "$Id";
Gibt es auch eine Möglichkeit die Ausgabe eines Shell-Kommandos in eine Make-Variable umzuleiten? Dann könnte ich mir schnell ein kleines Shellskript schreiben und die Ausgaben dann in die Make-Variablen übernehmen.
On Tuesday 09 September 2003 11:57, Bastian Schern wrote:
Gibt es auch eine Möglichkeit die Ausgabe eines Shell-Kommandos in eine Make-Variable umzuleiten?
Mit GNU-make auf jeden Fall:
VAR = $(shell kommando)
Mehr mit "info make", "How to use variables".
Du mußt aber aufpassen, daß "make" immer die letzte Zuweisung an eine
Make-Variable für das gesamte (!) Makefile verwendet.
CU
--
Stefan Hundhammer
Stefan Hundhammer wrote:
On Tuesday 09 September 2003 11:57, Bastian Schern wrote:
Gibt es auch eine Möglichkeit die Ausgabe eines Shell-Kommandos in eine Make-Variable umzuleiten?
Mit GNU-make auf jeden Fall:
VAR = $(shell kommando)
Mehr mit "info make", "How to use variables".
Du mußt aber aufpassen, daß "make" immer die letzte Zuweisung an eine Make-Variable für das gesamte (!) Makefile verwendet.
Genau das habe ich gesucht, nur das es bei mir nur mir `shell Kommando` funktioniert. Vielen Dank an alle, für die vielen Antworten. Bastian
participants (3)
-
Bastian Schern
-
dfroehling
-
Stefan Hundhammer