이전포스트

[Tip] Doxygen을 사용하여 소스코드에서 레퍼런스 문서를 자동으로 만들자.

freemmer 2010. 3. 3. 14:19
Doxygen이란?
Doxygen은 프로그램 소스코드를 기반으로 자동으로 레퍼런스 문서를 작성해 주는 툴 입니다. 소스코드에 정해진 형식으로 주석을 달거나 그룹화 시켜놓으면 Doxygen이 문서를 만들면서 포함시켜 만들어줍니다. 통상 클래스간의 관계를 이미지로 나타내기 위해서 Graphviz 라는 프로그램을 같이 설치 합니다. (물론, Graphviz가 없어도 간단한 관계는 Doxygen에서 표현해줍니다)

두 프로그램 모두 프리웨어로 제한없이 사용하실 수 있습니다.
Doxygen 다운로드 ( http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc )
Graphviz 다운로드 ( http://www.graphviz.org/Download_windows.php )

더욱 자세한 정보는 Doxygen 사이트의 메뉴얼 ( http://www.stack.nl/~dimitri/doxygen/manual.html )에서 확인 하실 수 있습니다.


Doxygen에서 인식하는 주석의 타입과 종류는 여러가지가 있으나 제가 자주 사용하는 몇가지를 소개합니다.

기본적인 주석 작성법.
//! test class의 간략한 설명.
/*!
test class의 자세한 설명.
*/

class Test
{
  public:

    //! 열거자의 간단한 설명
    enum TEnum { 
                 TVal1, //!< Enum value TVal1.
                 TVal2, //!< Enum value TVal2.
                 TVal3  /*!< Enum value TVal3.
						Multi-line.*/  
               } 
         //! Enum pointer.
         *enumPtr, 
         //! Enum variable.
         /*! Details. */
         enumVar;  
    
    //! 생성자.
    /*! Details. */
    Test();

    //! 소멸자.
   ~Test();
    
    //! testMe 함수의 간단한 설명.
    /*!
      \param a 파라메터 a의 설명
      \param s 파라메터 s의 설명
      \return 리턴값 설명
    */
    int testMe(int a,const char *s);
       
    //! testMeToo 함수의 간단한 설명.
    /*!
      @param c1 파라메터 c1의 설명
      @param c2 파라메터 c2의 설명
    */
    virtual void testMeToo(char c1,char c2) = 0;

	//! @name Print관련 함수
	//@{
	//! 'Print관련 함수' 그룹에 포함되는 함수1의 간단한 설명.
	void PrintFunction1() {}
	//! 'Print관련 함수' 그룹에 포함되는 함수2의 간단한 설명.
	void PrintFunction2() {}
	//@}
};


위의 소스코드에 주석을 삽입한 후에는 Doxygen을 실행시켜 빌드하면 됩니다. 옵션에 대한 설정은 제가 사용하는 설정의 캡쳐로 대신하겠습니다. 각각의 설정의 내용은 메뉴얼에서 확인해 보시기 바랍니다.

<Doxygen 1.6.2>
01234567891011121314


도움말 파일 만들기 (.chm)
위의 그림 중에서 Wizard -> Output의 옵션을 보면 체크되어 있는 Html에서 Prepare for compressed HTML(.chm)이 선택되어 있는데 이상태로 출력하게 되면 index.hhc, index.hhc, index.hhp 3개의 파일이 생성됩니다. 도움말 파일로 만들기 위해서는 다음과 같은 명령어로 컴파일을 해줘야 합니다.

윈도우키 + R 을 눌러 나타나는 실행창에 cmd 를 타이핑하여 콘솔을 실행합니다.
"C:\Program Files\HTML Help Workshop\hhc.exe"  D:\<작업한 경로>\index.hhp
그러면 index.chm파일이 생성됨을 보실 수 있습니다.


전처리문을 표시하기
위의 그림 중에서 Expert -> Preprocessor 의 옵션중에 MACRO_EXPANSION 을 체크하면, Class의 헤더파일에 정의한 매크로 맴버 함수등을 원형으로 교체해서 표시해줍니다. 일반적인 경우에는 별로 사용하지 않지만 가상 클래스를 사용하여 상속관계가 빈번할때 맴버 함수를 전처리문으로 define하는 경우 유용하게 사용될 수 있습니다.


Doxygen 빌드하기
위의 그림 중에서 Run 탭이 활성화 되어 있는 그림이 있습니다. 그곳에서 'Run doxygen'이라는 버튼을 누르면 빌드가 진행됩니다.


참고로 자동 생성된 클래스 다이어그램의 설명을 발췌합니다.
<상자별의 의미>
  • 검은 상자는 그래프를 산출한 구조체나 클래스를 말한다.
  • 검은선으로된 상자는 문서화된 구조체나 클래스를 표시한다.
  • 회색선으로된 상자는 문서화되지 않은 구조체나 클래스를 표시한다.
  • 빨간선으로된 상자는 모든 상속/containment 관계를 보이지 않은 문서화된 구조체나 클래스를 나타낸다. 지정된 경계안에 들어가지 않으면 그래프는 짤려진다.
<화살표별 의미>
  • 어두운 파란 화살표는 두 클래스간의 public 상속관계를 나타낸다.
  • 어두운 녹색 화살표는 protected 상속관계를 나타낸다.
  • 어두운 빨강 화살표는 private 상속관계를 나타낸다.
  • 밝은 자주색 화살표는 클래스에 의해 포함되거나 사용된 클래스를 나타낸다. 이 화살표의 라벨은 접근 가능한 변수명을 나타낸다.
  • 밝은 노랑색 화살표는 템플릿 인스턴스와 템플릿 클래스를 나타낸다. 이 화살표의 라벨은 그 인스턴스의 템플릿 매개변수를 나타낸다.











반응형