gpt4 book ai didi

cmake - 从CMake脚本构建doxygen

转载 作者:行者123 更新时间:2023-12-03 23:47:38 25 4
gpt4 key购买 nike

我在网上找到了一个示例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
)


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

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
)

关于cmake - 从CMake脚本构建doxygen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34878276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com