我想使用 doxygen 记录我的 C++ 源代码。 我通过在本地 PC 中安装 doxygen 成功,并且当 CMakelists.txt 尝试
find_package(Doxygen)
时,它成功并且正在生成文档。
现在我发现 doxygen 可执行文件可以轻松下载而无需安装,我觉得我应该卸载 doxygen 的本地安装,并应该使用 Windows 特定的
doxygen.exe
来自动化我的任务并将其分享给其他人。
因此,我在本地 PC 中卸载了 doxygen,并在我的存储库中创建了一个单独的子目录,其中包含 doxygen.exe 和 libclang.dll 文件(它们由 doxygen 本身提供。)
如果我现在执行 find_package(Doxygen),我的 CMake 如何使用 find_package 找到存储库 doxygen 可执行文件?或者我还应该在这里做其他事情吗?
我尝试将目录附加到 CMake_module_path 广告仍然不成功,find_package 无法检测到。
function(component_documentation)
find_package(Doxygen QUIET)
if(NOT Doxygen_FOUND)
message(
STATUS
"Doxygen not found - Documentation for ${PROJECT_NAME} will not be built."
)
return()
endif()
if(Doxygen_FOUND)
# Eliminate DOXYGEN_INPUT if present to avoid clash with FindDoxygen.cmake
if(NOT DOXYGEN_INPUT)
set(PRO_DOXYGEN_INPUT
${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/doc
${CMAKE_CURRENT_SOURCE_DIR}/README.md
${CMAKE_CURRENT_SOURCE_DIR}/other.md)
else()
set(PRO_DOXYGEN_INPUT ${DOXYGEN_INPUT})
unset(${DOXYGEN_INPUT})
endif()
# default doxygen settings
if(NOT DOXYGEN_PROJECT_NAME)
set(DOXYGEN_PROJECT_NAME ${PROJECT_NAME})
endif()
if(NOT DOXYGEN_RECURSIVE)
set(DOXYGEN_RECURSIVE YES)
endif()
if(NOT DOXYGEN_USE_MDFILE_AS_MAINPAGE)
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE "${CMAKE_CURRENT_SOURCE_DIR}/other.md")
endif()
if(NOT DOXYGEN_HTML_EXTRA_STYLESHEET)
set(DOXYGEN_HTML_EXTRA_STYLESHEET doc/style/style.css)
endif()
if(NOT DOXYGEN_HTML_EXTRA_FILES)
set(DOXYGEN_HTML_EXTRA_FILES
doc/style/background.jpg doc/style/ams-visual-data.jpg
doc/style/specific-Book.otf
doc/style/specific-Medium.otf)
endif()
if(NOT DOXYGEN_HTML_HEADER)
set(DOXYGEN_HTML_HEADER doc/style/headerFile)
endif()
if(NOT DOXYGEN_HTML_FOOTER)
set(DOXYGEN_HTML_FOOTER doc/style/footerFile)
endif()
if(NOT DOXYGEN_PROJECT_LOGO)
set(DOXYGEN_PROJECT_LOGO doc/style/Logo_with_tagline_black_sRGB.png)
endif()
# -- needed for plantuml diagram generation
find_file(DOXYGEN_PLANTUML_JAR_PATH plantuml.jar $ENV{PLANTUML_JAR_PATH}
/scripts/plantuml)
doxygen_add_docs(DOCUMENTATION ${PRO_DOXYGEN_INPUT})
install(
DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/
COMPONENT DOCUMENTATION
DESTINATION doc/${PROJECT_NAME})
endif(Doxygen_FOUND)
endfunction()
我找到了答案,使用 PATH 选项。我一开始并没有注意到这一点。所以我将命令修改为
find_package(Doxygen REQUIRED PATHS ${CMAKE_CURRENT_SOURCE_DIR}/tools}
。然后 find_package 能够找到确切的工具并能够运行命令。