2016-12-17 14 views
4

私は、クロスプラットフォーム開発を容易にするための条件付きの定義が相当量あるプロジェクトを持っています。しかし、私はDoxygenがすべての定義を抽出することを納得させる問題を抱えています。Doxygenドキュメントすべての条件付き定義

たとえば、次のスニペットでは、DoxygenはTARGET_X86_64を示しますが、TARGET_ARM64は示していません。

#if defined(_M_ARM64) || defined(__arm64__) || defined(__aarch64__) 
/** Build target is ARM64 if defined. */ 
#define TARGET_ARM64 
#else 
/** Build target is x86_64 if defined. */ 
#define TARGET_X86_64 
#endif 

EXTRACT_ALLを有効にしても有効ではありません。前処理を無効にすると、Doxygenは何も記録しません。どのようにdoxygenを取得して両方のケースのドキュメントを抽出するのですか?

答えて

0

私は冗長ではありますが機能する「解決策」を作りました。 #elseifステートメントを使用する場合は、純粋な#ifステートメントだけを使用するよりも扱いにくいです。どちらかが動作しますが。

最初に、すべてを定義し、条件付きロジックについては気にしないでください。

/** Some define */ 
#define TARGET_DEFINE 

/** Some other define */ 
#define OTHER_TARGET_DEFINE 

第2に、定義を作成するために元々使用していた条件付きロジックを使用して、論理を定義解除するように変換します。

#if !(ORIGINAL_LOGIC) 
#undef TARGET_DEFINE 
#endif 

最後に、doxygenが前処理を行っているときに何も定義されていないように条件ロジックを変更します。

#if !defined(DOXYGEN) 
... 
関連する問題