2010-03-01 3 views
18

Doxygen에서 전 처리기 정의를 문서화 할 수 있습니까? 변수 나 함수처럼 할 수있을 것으로 기대했지만, Doxygen 출력은 정의에 대한 문서를 "잃어버린"것처럼 보이고 정의 자체도 포함하지 않습니다. Doxygen에서 전 처리기 정의 문서화

나는 다음과 같은

/**My Preprocessor Macro.*/ 
#define TEST_DEFINE(x) (x*x) 

/**@def TEST_DEFINE 

    My Preprocessor Macro. 
*/ 
#define TEST_DEFINE(x) (x*x) 

나는 또한 그룹 (시도 defgroup, addtogroup 및 내 집단) 내에서 퍼팅 시도

보다는 "파일 범위"에서 그러나 시도하는 그룹의 다른 항목도 의도 한대로 문서화되었지만 영향을 미치지 않았습니다.

다양한 Doxygen 옵션을 살펴 보았지만 정의에 대한 문서화를 활성화 (또는 방지)하는 것을 볼 수 없었습니다.

답변

25

네, 가능을 확인해야 EXTRACT_ALL를 사용하지 않고 그 일을 더 우아한 방법이있을 수 있습니다. Doxygen documentation는 말한다 :

당신이 정의되어있는 파일을 문서화해야한다 전역 개체 (함수, 구조체에는, 열거, 매크로 등), 을 문서화하십시오. 즉, 적어도이 파일에

/*! \file */

또는

/** @file */

줄이 있어야합니다.

당신은 @defgroup, @addtogroup@ingroup들이 별도의 파일 (자세한 내용은 문서 here 참조)에 표시되는 경우에도 동일한 모듈에 관련 항목을 넣어 사용할 수 있습니다. 여기에 (Doxygen을 1.6.3을 사용하는) 나를 위해 작동 최소한의 예는 다음과 같습니다

Doxyfile :

# Empty file. 

Test.h :

/** @file */ 

/**My Preprocessor Macro.*/ 
#define TEST_DEFINE(x) (x*x) 

/** 
* @defgroup TEST_GROUP Test Group 
* 
* @{ 
*/ 

/** Test AAA documentation. */ 
#define TEST_AAA (1) 
/** Test BBB documentation. */ 
#define TEST_BBB (2) 
/** Test CCC documentation. */ 
#define TEST_CCC (3) 
/** @} */ 

Foo.h :

/** @file */ 

/** 
* @addtogroup TEST_GROUP 
* 
* @{ 
*/ 

/** @brief My Class. */  
class Foo { 
    public: 
     void method(); 
}; 

/** @} */ 

Bar.h :이 경우

/** @file */ 

/** 
* @ingroup TEST_GROUP 
* My Function. 
*/ 
void Bar(); 

TEST_DEFINE 문서는 테스트에 나타납니다.H HTML 출력에 파일 탭에서 항목 및 TEST_AAA 등 정의는 클래스 Foo과 기능 Bar와 탭 함께 모듈에 테스트 그룹 아래에 나타납니다.

/** @file Test.h */ 

다음이 파일의 실제 이름과 일치해야합니다주의해야 할

한 가지는 당신이 @file 명령, 예컨대 후 파일 이름을 넣어 경우이다. 그렇지 않으면 파일의 항목에 대한 문서가 생성되지 않습니다.

@file 명령을 추가하지 않으려면 Doxyfile에 EXTRACT_ALL = YES을 설정하십시오.

도움이 되었기를 바랍니다. 내 "C"파일에서

+0

그룹/모듈에 넣을 방법이 없다는 뜻입니까? 그게 내가 정말로하려고 노력하고있어 그게 그들이 기능/클래스/등 그들이 함께 관련이 있습니다 (거기에 여러 파일을 통해뿐만 아니라 확산). –

+0

안녕하세요 Fire Lancer, 내 답변에 그룹화에 대한 세부 사항을 추가했습니다 – ChrisN

+0

좋아, addtogroup 또는 defgroup 블록에서 작동하도록했습니다. ingroup은 어딘가에 정의를 풀어 놓은 것처럼 보입니다. (defgroup은 그룹의 주요 문서와 .cpp에 있고 헤더의 정의를 제외한 모든 것이 그룹에 잘 들어갑니다) ... 나는 그것이 어떤 종류의 버그 일 것임을 짐작하고 있습니다. Doxygens 부분에? –

3

, 나는 다음과 같은 코멘트 형식과 #DEFINE 줄을 사용하십시오

/** @brief Number of milli-seconds to wait*/ 
#define kTimeoutMSec (2) 

내 HTML 문서는 사용자가 지정한 문서가 포함 된 결국 않습니다. (파일 상단에 @file이 있고 EXTRACT_ALL = YES가 있습니다.)

0

이전 답변에 추가하면 Doxyfile에 ENABLE_PREPROCESSING=YES이 있어야합니다.