如何解决如何在 CMake 脚本中运行由其 Conan 包安装的 Doxygen 二进制文件?
目前,我使用我编写的两个函数以编程方式生成 conanfile.txt
:
message(STATUS "Fetching Doxygen from Conan.")
add_project_dependencies(${PROJECT_NAME}_docs CONAN BUILD_DEPS required doxygen/1.9.1)
link_project_dependencies(${PROJECT_NAME}_docs PRIVATE)
他们一起创造了${CMAKE_BINARY_DIR}/deps_${PROJECT_NAME}_docs/conanfile.txt
:
[requires]
[build_requires]
doxygen/1.9.1
[generators]
cmake_find_package
[options]
[imports]
然后他们在该目录中运行 conan install .
并成功构建了 Doxygen。当我使用 cmake_find_package
生成器时,还会在该目录中创建一个 Finddoxygen.cmake
。到现在为止还挺好。但是,找到这样的包:
find_package(doxygen required)
没有像它应该提供的那样提供 DOXYGEN_EXECUTABLE
(它被设置为 DOXYGEN_EXECUTABLE-NOTFOUND
)。它也不提供 doxygen_add_docs()
供使用。因此,根据 FindDoxygen docs ,并且由于柯南生成的 Finddoxygen.cmake
包含 doxygen::doxygen
的目标定义,我认为我应该使用生成器表达式(根据 here):
add_custom_target(docs
COMMAND $<TARGET_FILE:doxygen::doxygen> ${DOXYGEN_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM)
但这会产生错误:Target "doxygen::doxygen" is not an executable or library.
那或 LOCATION
目标属性都不起作用;我使用 this snippet 查看目标的属性:
doxygen::doxygen IMPORTED = TRUE
doxygen::doxygen IMPORTED_GLOBAL = FALSE
doxygen::doxygen INTERFACE_COMPILE_OPTIONS = ;
doxygen::doxygen INTERFACE_LINK_LIBRARIES = ;xapian::xapian;ZLIB::ZLIB;$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:>;$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,MODULE_LIBRARY>:>;$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:>
doxygen::doxygen NAME = doxygen::doxygen
doxygen::doxygen TYPE = INTERFACE_LIBRARY
并且它不提供任何包含在 doxygen
生成的 ~/.conan/data/doxygen/1.9.1/_/_/package/ff3ada3b39a52bebe18da7d8c32a4aead970f75c/bin/doxygen
二进制文件的路径的属性。
那么如何在我的 CMake 脚本中使用它呢?我错过了什么吗?因为查看 this resolved issue 中的示例用法,看来我的方法是正确的,它应该找到二进制文件并设置 DOXYGEN_EXECUTABLE
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。