Webでサンプルのcmakeファイルを見つけて、プロジェクトの/doc
サブディレクトリに配置しました。このファイルには、myproject.doxgen
もあり、Doxygen構成が含まれています。
doxygen.exe myproject.doxygen
を実行すると、有効な出力が生成されることをテストしました。これをCMakeプロセスに組み込むだけです。したがって、/doc/CMakeLists.txt
は:
find_package(Doxygen)
option(BUILD_DOCUMENTATION "Create and install the HTML based API
documentation (requires Doxygen)" ${DOXYGEN_FOUND})
if(BUILD_DOCUMENTATION)
if(NOT DOXYGEN_FOUND)
message(FATAL_ERROR "Doxygen is needed to build the documentation.")
endif()
set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/../doc/myproject.doxygen)
set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/doxyfile)
configure_file(${doxyfile_in} ${doxyfile} @ONLY)
message("Doxygen build started.")
add_custom_target(doc
COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile_in}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
COMMENT "Generating API documentation with Doxygen"
VERBATIM)
# install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc)
endif()
私には機能しません。元の設定ファイルを/build/my/project/doc/
にコピーするだけで、それ以上は何もしません。
私が欲しいのは、ビルド中にdoxygenドキュメントを生成することです。理想的には、リリース構成を構築するときのみです。
表示したCMakeファイルの設定方法では、doc
というターゲットを作成します。そのターゲットを構築すると(make doc
の実行など)、doxymentationが生成されます。ターゲットはmake all
(または同等のもの)の一部ではありません。そのようにするには、カスタムターゲットの作成にALL
を追加します。
add_custom_target(
doc ALL
COMMAND #... everything else as before
)
このコメントを特定の構成でのみビルドするように制限したい場合(コメントで述べたように)、 ジェネレーター式 を使用できます。
add_custom_target(
doc ALL
COMMAND $<$<CONFIG:Release>:${DOXYGEN_EXECUTABLE} ${doxyfile_in}>
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
COMMENT "Generating API documentation with Doxygen"
VERBATIM
)
一部のCMakeジェネレーターは、空のCOMMAND
にうまく対応できない場合があります。これを念頭に置いて、以下はフェイルセーフでなければなりません:
add_custom_target(
doc ALL
COMMAND
$<$<CONFIG:Release>:${DOXYGEN_EXECUTABLE} ${doxyfile_in}>
$<$<NOT:$<CONFIG:Release>>:${CMAKE_COMMAND} -E echo "Only done in Release builds">
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
COMMENT "Generating API documentation with Doxygen"
VERBATIM
)