Я хотел бы знать, существует ли способ встроить Подвижные теги в мой код C/C++.
В основном я хотел бы строку тега, которая закончит тем, что была номером выпуска (major.minor.rev), была автоматически вставлена в решительное местоположение моего кода C как статическая строка.
Главная цель состоит в том, что приложение могло быть запрошено о его номере версии при выполнении с говорят что '-v' параметр командной строки. Любой альтернативный подход, который не включает попытку встроить Подвижный тег, будет также одобрен как ответ.
Я использую Код:: Блоки на среде Linux, таким образом, решение не может полагаться на функции Visual Studio.
Для этого мы используем макрос
#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;
}
Вам понадобится расширение ключевого слова , чтобы разрешить расширение записей ключевых слов, оно связано с 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}
Примечание : это отключает встроенные ключевые слова
Более подробную информацию о расширении можно найти в вики .