2016-10-28 3 views
0

私はCmakeを使って.chmのドキュメントを作りたいと思っています。 関連するコード断片:CMakeの下の1つのターゲットでDoxygenとchmcmdをどのように組み合わせることができますか?

set(doxyfile_in ${CMAKE_SOURCE_DIR}/doc/documentation-config.doxygen.in) 
    set(doxyfile ${CMAKE_BINARY_DIR}/Doxyfile) 

    configure_file(${doxyfile_in} ${doxyfile} @ONLY) 

    add_custom_target(doc 
     COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} 
     WORKING_DIRECTORY ${CMAKE_BINARY_DIR} 
     COMMENT "Generating API documentation with Doxygen" 
     VERBATIM) 

    add_custom_target(chm 
    COMMAND chmcmd index.hhp 
     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc 
     COMMENT "Generating API documentation with chmcmd" 
     VERBATIM) 

e.e.e.現在私は2つのターゲットを定義しています。このようにしてmake docはhtmlファイルを生成し、その後はmake chmが.CHMファイルを生成します。それは正常に動作しますが、手作業が必要です。

これらを組み合わせることはできますか? (作業ディレクトリが異なるので、add_custom_targetにCOMMANDをもう1つ使用することはできません) 理想的には、2つのターゲットを連結することです。ところで

:chmcmdは、私は、ファイルMemory.cppを持っているので、私はchmcmdは私のファイルから派生したファイルを、使用したいと思います

Error: Anchor Memory_8cpp.html#a1e349bf268cc8c667b3d264111b6a3c1 undefined; first use Memory_8cpp.html 

のようなメッセージを与えます。私はDoxygenにいくつかのオプションを設定しないか、またはいくつかのバージョンの不一致が発生するなど、これに責任がありますか?

BTW2:何かラインFindChmcmdていますか?

+0

ターゲットを他のものから(add_dependencies()で)​​マークすることができます。したがって、両方をビルドするにはターゲットの1つを使ってmakeを呼び出す必要があります。あるいは、 'add_custom_target'の代わりに' add_custom_command'を使用し、別のコマンドの* OUTPUT *に1つのコマンド* DEPEND *を作ることができます。 – Tsyvarev

答えて

0

最後に、ここで受け取ったアドバイスを使用して、私は以下の設定ファイルに到着しました。多分それはsomoneに役立つでしょう。

# ---[ Configuring Doxygen and maybe chmcmd 
if(NEED_DOCS) 
    find_package(Doxygen) 
    if(DOXYGEN_FOUND) 
    message("Configuring ${PROJECT_NAME} HTML documentation") 
    configure_file(${doxyfile_in} ${doxyfile} @ONLY) 
    add_custom_target(doc 
     DEPENDS ${PROJECT_NAME} # Make sure to up-to-date source files 
     COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} 
     WORKING_DIRECTORY ${CMAKE_BINARY_DIR} 
     COMMENT "Generating API documentation with Doxygen" 
     VERBATIM) 
    if(UNIX) 
     FIND_PROGRAM(DPKG_CHMCMD_FOUND chmcmd) 
     if(DPKG_CHMCMD_FOUND) 
     message("Configuring ${PROJECT_NAME} CHM documentation") 
     add_custom_target(chm 
      DEPENDS doc 
     COMMAND chmcmd index.hhp 
     COMMAND chmod 755 ${PROJECT_NAME}.chm 
      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/doc 
      COMMENT "Generating API documentation with chmcmd using Doxygen output" 
      VERBATIM) 
     add_dependencies(chm doc) 
     else() 
     message(AUTHOR_WARNING "chmcmd is needed to build the .chm documentation.") 
     endif(DPKG_CHMCMD_FOUND) 
    endif(UNIX) 
    else() 
    message(AUTHOR_WARNING "Doxygen is needed to build the .html documentation.") 
    endif(DOXYGEN_FOUND) 
endif(NEED_DOCS) 
関連する問題