Как я встраиваю Подвижные теги в свой код C/C++?

Я хотел бы знать, существует ли способ встроить Подвижные теги в мой код C/C++.

В основном я хотел бы строку тега, которая закончит тем, что была номером выпуска (major.minor.rev), была автоматически вставлена в решительное местоположение моего кода C как статическая строка.

Главная цель состоит в том, что приложение могло быть запрошено о его номере версии при выполнении с говорят что '-v' параметр командной строки. Любой альтернативный подход, который не включает попытку встроить Подвижный тег, будет также одобрен как ответ.

Я использую Код:: Блоки на среде Linux, таким образом, решение не может полагаться на функции Visual Studio.

8
задан TylerH 1 March 2017 в 20:27
поделиться

2 ответа

Для этого мы используем макрос

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

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

CVS автоматически расширяет $ Id $. Я предполагаю, что это то, с чем работают ртутные теги.

Затем мы можем использовать команду strings, чтобы найти точную версию каждого файла в исполняемом файле / библиотеке и т. Д.

Вы можете использовать что-то подобное.

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

int main() {

    .....
    std::cout << "Version is " << rcsid << std::endl;
}
0
ответ дан 5 December 2019 в 22:18
поделиться

Вам понадобится расширение ключевого слова , чтобы разрешить расширение записей ключевых слов, оно связано с mercurial.

Например, чтобы получить поддержку для $ Id $ , вы можете отредактировать hgrc для своего репо ( .hg / hgrc ) и добавить:

[extensions]
keyword =

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

Затем запустите

hg kwexpand

, чтобы развернуть ключевые слова соответствующие файлы или

hg kwshrink

для сокращения ключевых слов. Вы даже можете создать свои собственные ключевые слова, добавив запись [ключевые слова] , например

[keywordmaps]
User = {author|user}

Примечание : это отключает встроенные ключевые слова

Более подробную информацию о расширении можно найти в вики .

6
ответ дан 5 December 2019 в 22:18
поделиться