2010-02-12 10 views
8

Chciałbym wiedzieć, czy istnieje sposób na umieszczenie tagów Mercurial w moim kodzie C/C++.Jak umieścić znaczniki Mercurial w moim kodzie C/C++?

Zasadniczo chciałbym, aby ciąg znaków, który będzie końcem będący numerem wydania (major.minor.rev), został automatycznie wstawiony w ustaloną lokalizację mojego kodu C jako ciąg statyczny.

Ogólnym celem jest to, że aplikacja może zostać zapytana o numer wersji po wykonaniu z powiedzeniem argumentu "-v". Wszelkie alternatywne podejście, które nie obejmuje próby osadzenia znacznika Mercurial, również zostanie przyjęte jako odpowiedź.

Używam Code :: Blocks w środowisku Linux, więc rozwiązanie nie może polegać na funkcjach Visual Studio.

Odpowiedz

0

Używamy makro dla tej

#define CVS(a) static const volatile char *rcsid = a; 

.... 
CVS("$Id$") 

CVS automagicznie rozszerza $ Id $. Zakładam, że to właśnie działają również znaczniki mercurial.

Wtedy możemy użyć ciągi poleceń, aby znaleźć dokładnie wersję każdego pliku wykonywalnego w/biblioteki itp

Można użyć czegoś podobnego.

static const volatile char *rcsid = "$Id"; //or whatever mercurial tag you want 

int main() { 

    ..... 
    std::cout << "Version is " << rcsid << std::endl; 
} 
+0

Jeśli tag $ Id $ miałby w tym miejscu zbłąkane '' ', mógłbyś mieć kłopot. Możesz spróbować' #define CVS (a) static const volatile char * rcsid = #a; \ ... \ CVS ($ Id $); 'zamiast. –

+0

@Tim Schaeffer, dobry połów, pisałem z pamięci, czasami nie ma substytutu dla dobrego starego kopiowania/wklejania – Glen

+0

teraz masz problem z tagiem Id mając w nim zabłąkany przecinek. –

6

Będziesz potrzebne keyword extension aby umożliwić rozszerzenie zapisów słów kluczowych, to jest w zestawie z Mercurial.

Na przykład, aby uzyskać poparcie dla $Id$ można edytować hgrc Ci repo (.hg/hgrc) i dodać:

[extensions] 
keyword = 

[keyword] 
# Enable expansion for the specific files 
myfile.cpp = 
# Enable for all .h files 
**.h = 

Następnie uruchom

hg kwexpand 

rozszerzyć słowa kluczowe odpowiednie pliki lub

hg kwshrink 

do zmniejszania słów kluczowych. Możesz nawet tworzyć własne słowa kluczowe, dodając wpis [keywordmaps], np.

[keywordmaps] 
User = {author|user} 

Uwaga: wyłącza to polecenie wbudowane słów kluczowych

Więcej szczegółów na temat rozszerzenia można znaleźć in the wiki.

Powiązane problemy