首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CMake脚本构建doxygen

从CMake脚本构建doxygen
EN

Stack Overflow用户
提问于 2016-01-19 21:38:52
回答 1查看 20.8K关注 0票数 17

我在网上找到了一个示例cmake文件,并将其放在我的项目的DOOX子目录中,myproject.doxgen文件也位于这个子目录中,其中包含/doc配置。

我已经测试过,运行doxygen.exe myproject.doxygen会产生有效的输出。我只需要将它构建到CMake过程中。所以/doc/CMakeLists.txt是:

代码语言:javascript
复制
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文档;理想情况下,仅在构建发布配置时生成。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 22:26:36

按照您所展示的CMake文件的设置方式,它将创建一个名为doc的目标;构建该目标(例如运行make doc)将生成doxymentation。目标不是make all (或等效物)的一部分;要使其成为一部分,请将ALL添加到自定义目标创建中:

代码语言:javascript
复制
add_custom_target(
  doc ALL
  COMMAND #... everything else as before
)

如果您希望将此目标限制为仅在特定配置中构建(正如您在注释中提到的),则可以使用generator expressions

代码语言:javascript
复制
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。考虑到这一点,以下内容应该是故障保护的:

代码语言:javascript
复制
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
)
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34878276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档