Раскрыть макрос внутри комментария doxygen для распечатки версии программного обеспечения

У меня есть некоторая кодовая база C++, задокументированная с помощью doxygen, и сборка с помощью GNU make. Информация о версии централизована в make-файле, где у меня есть что-то вроде:

VERSION=1.2.3.4

В моем make-файле CFLAGS добавляет следующее определение:

CFLAGS += -DAPP_VERSION=$(VERSION)

Это позволяет мне получить версию в коде, например:

#define STR_EXPAND(tok) #tok
#define STR(tok) STR_EXPAND(tok)
int main()
{
    cout << "software version is << STR(APP_VERSION) << endl;
}

Теперь я хотел бы иметь это в HTML-файлах, созданных doxygen:

Текущая версия программного обеспечения 1.2.3.4

Мне удалось экспортировать переменную makefile в файл конфигурации doxygen с помощью: (edit: doxygen вызывается из make-файла через цель make-doc)

PREDEFINED = APP_VERSION=$(VERSION)

Но тогда, если я попытаюсь выполнить команду doxygen \mainpage что-то вроде этого, это терпит неудачу, потому что (конечно) имена макросов не расширяются в комментариях...

/**
\mainpage this is the doc
Current version is $(APP_VERSION) -- or -- ... is APP_VERSION
*/

Вопросы

  • Вы знаете способ "расширить" этот макрос в комментариях doxygen? Это можно сделать с помощью некоторой обработки sed файла, содержащего комментарий в make-файле, но, может быть, это можно решить напрямую с помощью doxygen?

  • Как другие проекты управляют версиями (помимо автоматического инструмента управления версиями, который предоставляет VCS, я имею в виду) таким образом, чтобы идентификатор версии был однозначно определен в файле, поэтому его можно было получить как из системы сборки программного обеспечения, так и из системы сборки документации .

Связано: Как отобразить определенное значение

7
задан Community 23 May 2017 в 10:34
поделиться