2016-12-17 6 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

"솔루션"을 길게 작성했지만 작동합니다. 순수 #if 문을 사용하는 것보다 #elseif 문을 사용하기를 원할 때 덜 어색합니다. 어느 것이 든 작동 할 것입니다.

우선 조건 논리에 상관없이 모든 것을 정의하십시오.

/** Some define */ 
#define TARGET_DEFINE 

/** Some other define */ 
#define OTHER_TARGET_DEFINE 

두 번째로, 원래 정의를 작성하고 논리를 정의 해제하기 위해 원래 사용했던 조건부 논리를 사용하십시오. doxygen이는 전처리를 수행 할 때 아무것도 정의하지 않도록

#if !(ORIGINAL_LOGIC) 
#undef TARGET_DEFINE 
#endif 

마지막으로, 조건부 로직을 변경합니다.

#if !defined(DOXYGEN) 
...