私はいくつかのC++コードベースを持っており、doxygenで文書化されており、GNUmakeでビルドしています。バージョン情報はmakefileに一元化されており、次のようなものがあります。
バージョン=1.2.3.4
私のmakefileで、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;
}
さて、私が欲しいのは、これをdoxygenで生成されたhtmlファイルに含めることです。
ソフトウェアの現在のバージョンは1.2.3.4です
私はmakefile変数をdoxygen構成ファイルにエクスポートすることができました:(編集:doxygenはmakefileから'make-doc'ターゲットを介して呼び出されます)
PREDEFINED = APP_VERSION = $(VERSION)
しかし、doxygen \ mainpageコマンドでこのようなことを試してみると、失敗します。これは、(もちろん)マクロ名がコメントで展開されないためです...
/**
\mainpage this is the doc
Current version is $(APP_VERSION) -- or -- ... is APP_VERSION
*/
質問
doxygenコメントでそのマクロを「拡張」する方法を知っていますか?これは、makefileにコメントを保持しているファイルのsed処理によって実行できますが、doxygenを使用して直接解決できる可能性がありますか?
バージョンIDがファイルで一意に定義され、ソフトウェアビルドシステムとドキュメントビルドシステムの両方でフェッチできるように、他のプロジェクトはバージョン管理をどのように処理しますか(VCSが提供する自動バージョン管理ツールを除く)。