CMakeをつかったmake時にdoxygenが実行されるような方法
はじめに
CMakeの設定ファイルCMakeLists.txtにdoxygen関連の記述をする方法について述べます.まとめると以下の2点です.
-
make
時にコンパイルと一緒にdoxygenを実行できる - CMakeLists.txtに書かれたバージョン番号をdoxygenの設定ファイル(Doxyfile など.以下ではdoxygen.conf)に書くことができる.いちいち設定ファイルにあるバージョン番号をいじる必要がない.
必要なもの
- Doxygen用のコメントがついた自作のライブラリ(以下の説明では,自作のライブラリ https://github.com/tmichi/mibase を使用しています)
- Doxygen (http://www.doxygen.jp)
Windows, Macの両方でできたことを確認しています.
参考資料
ファイル
必要なことは,以下の3つです.
- CMakeLists.txtで定義した変数を埋め込んだ設定ファイルdoxygen.conf.inを用意する.
- CMakeLists.txtに,(1)doxygen.conf.inからdoxygen.confを生成する,(2)doxygenを実行する,(3)インストール先を指定する記述を追加する.
- (オプション) doxygenがない場合の処理を追加する.
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でインストールする際に,どこにおけばいいかわからなかったので空欄にしています.
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でもちゃんとできたのが嬉しいです,
Author And Source
この問題について(CMakeをつかったmake時にdoxygenが実行されるような方法), 我々は、より多くの情報をここで見つけました https://qiita.com/tmichi/items/9105bc271ee7fd7277fb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .