CMakeをつかったmake時にdoxygenが実行されるような方法


はじめに

CMakeの設定ファイルCMakeLists.txtにdoxygen関連の記述をする方法について述べます.まとめると以下の2点です.

  • make時にコンパイルと一緒にdoxygenを実行できる
  • CMakeLists.txtに書かれたバージョン番号をdoxygenの設定ファイル(Doxyfile など.以下ではdoxygen.conf)に書くことができる.いちいち設定ファイルにあるバージョン番号をいじる必要がない.

必要なもの

Windows, Macの両方でできたことを確認しています.

参考資料

ファイル

必要なことは,以下の3つです.

  • CMakeLists.txtで定義した変数を埋め込んだ設定ファイルdoxygen.conf.inを用意する.
  • CMakeLists.txtに,(1)doxygen.conf.inからdoxygen.confを生成する,(2)doxygenを実行する,(3)インストール先を指定する記述を追加する.
  • (オプション) doxygenがない場合の処理を追加する.
docs/CMakeLists.txt
FIND_PACKAGE(Doxygen)
IF(DOXYGEN_FOUND)
        SET(DOXYGEN_CONF_FILE "doxygen.conf")
        SET(DOXYGEN_CONF_PATH   ${CMAKE_CURRENT_BINARY_DIR}/${DOXYGEN_CONF_FILE})
        SET(DOXYGEN_SOURCE_DIR ${CMAKE_SOURCE_DIR})
        SET(DOXYGEN_TARGET "doc" )

        CONFIGURE_FILE(${DOXYGEN_CONF_FILE}.in ${DOXYGEN_CONF_PATH})

        ADD_CUSTOM_TARGET(${DOXYGEN_TARGET}
                        ${DOXYGEN_EXECUTABLE} ${DOXYGEN_CONF_PATH}
                        DEPENDS  ${DOXYGEN_CONF_PATH})
 # この設定だと Macでmake docしなかった場合に,make installしたらエラーが出るので,コメントアウトして保留 (15/07/09)
 #       IF (WIN32)
 #               # to do .
 #       ELSE()
 #               INSTALL( DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html/"
 #                        DESTINATION "/usr/local/share/doc/${PROJECT_NAME}-${VERSION_STRING}" )
 #       ENDIF (WIN32)
ELSE(DOXYGEN_FOUND)
#ない場合は,warningを出す.
        MESSAGE (WARNING "doxygen binary couldn't be found")
ENDIF(DOXYGEN_FOUND)

# to doとかいてある部分は,Windowsでインストールする際に,どこにおけばいいかわからなかったので空欄にしています.

doxygen.conf.in
DOXYFILE_ENCODING      = UTF-8
PROJECT_NAME           = @PROJECT_NAME@
PROJECT_NUMBER         = @VERSION_STRING@
(以下省略)

@PROJECT_NAME@@VERSION_STRING@は ルートのCMakeLists.txtで定義済みの変数です.

以上の設定で,cmake .. とでもやると,doxygen.confが作成されて,make doc でdoxygen が走ります.Windowsでもちゃんとできたのが嬉しいです,