Versjonsnr inn i koden fra versjonskontrollsystemet

Kategori overført fra Linux1

Versjonsnr inn i koden fra versjonskontrollsystemet

Innleggav TO » ons 02.07.2008 18:34

Ref. en tråd på epostlista for Mercurial, tema: "How to identify the source's revision? "
( http://www.selenic.com/pipermail/mercur ... 19874.html )

Det sies, noe for kort for meg:
If your project has a build process, then the usual thing is to have the
build process ask hg what the version is and incorporate that into the
build. If you have a Makefile, that's something like:

Kode: Merk alt
version.o:
       cc -DVERSION="`hg id`" version.c -o version.o

This is overwhelmingly the most common use of tags and it's trivially
replaced


Jeg lurer på om noen kan hjelpe meg med strukturen og konseptet i dette, Jeg antar at prosedyren vil være noe som følger:
1. I Makefile defineres VERSION som beskrevet over. Det kan antas at 'hg id' er en skallkommando som fungerer og gir en en kurant versjonsstreng.
2. I kildekoden så er det en eller annen kobling hvor VERSION puttes inn magisk av kompilatoren, men hva og hvordan gjøres dette på enkleste og mest tradisjonelle vis? Jeg legger ved et forslag for å illustrere hva jeg ønsker å oppnå:

Kode: Merk alt
int main(int argc,char **argv)
{
   // VERSION kommer inn utenfra i kompileringsøyeblikket
   string program_version=string("VERSION");
   ...
   while ((c = getopt(argc, argv, ":hv")) != -1)
     {
   switch(c)
     {
      case 'v':
        cout<<"Program "<<program_version<<endl
        exit(0);
        break;
medlem i 160 måneder
 

Re: Versjonsnr inn i koden fra versjonskontrollsystemet

Innleggav jebreimo » ons 02.07.2008 22:23

Dersom "hg id" returnerer f.eks. 20, så vil
Kode: Merk alt
-DVERSION="`hg id`"
være ekvivalent med å plassere
Kode: Merk alt
#define VERSION 20
i starten av filen din. Koden din blir dermed
Kode: Merk alt
int main(int argc,char **argv)
{
   ...
   while ((c = getopt(argc, argv, ":hv")) != -1)
     {
   switch(c)
     {
      case 'v':
        cout << "Program " << VERSION << endl;
        exit(0);
        break;
medlem i 158 måneder
 

Re: Versjonsnr inn i koden fra versjonskontrollsystemet

Innleggav TO » fre 04.07.2008 18:56

Takk, det fungerte strålende. For å glede kompilatoren måtte jeg legge til et ekstra sett med fnutter, slik: -DVERSION=' "versjonsstreng" '.
medlem i 160 måneder
 


Returner til Utvikling i Linux



Hvem er i Forumene

Registrerte brukere: Google [Bot]