列出doxygen主页面中的所有子项目

时间:2016-07-30 21:57:20

标签: cmake markdown doxygen

我想让我的doxygen主页列出我所有的子项目,并参考他们各自的README.md文件。

在每个子项目的CMakeLists.txt(每个项目都在自己的子文件夹中)中,我调用函数REGISTER_TARGET(my_project_name),该函数定义为

macro(REGISTER_TARGET TARGET)
    # Storing target name and directory as 2D-array
    SET(GLOBAL_TARGETS "${GLOBAL_TARGETS};${TARGET}\;${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "source_list")
    # doing other things concerning the build
    ...
endmacro(REGISTER_TARGET)

在我的doxygen的CMakeLists.txt中我做了

SET(DOXYGEN_GLOBAL_TARGETS "")
foreach(pair ${GLOBAL_TARGETS})
  LIST(GET pair 0 local_project_name)
  LIST(GET pair 1 local_project_dir)
  SET(local_project_readme "${local_project_dir}/README.md")

  LIST(APPEND DOXYGEN_FILES ${local_project_readme})
  SET(DOXYGEN_GLOBAL_TARGETS "${DOXYGEN_GLOBAL_TARGETS}\n- ${local_project_name}. @ref ${local_project_readme}")
endforeach()
...
CONFIGURE_FILE("${DOXYGEN_MAINFILE_IN}" "${DOXYGEN_MAINFILE}" @ONLY)

我的DOXYGEN_MAINFILE_IN看起来像

This is the main page
======

Sub projects
------------
@DOXYGEN_GLOBAL_TARGETS@

这在DOXYGEN_MAINFILE中显示为:

This is the main page
======

Sub projects
------------
- name_of_project1. @ref C:/very/ugly/source/path/name_of_project1/README.md
- name_of_project2. @ref C:/very/ugly/source/path/name_of_project2/README.md

没有正确链接到此文件(在HTML中,显示整个路径,最后一个路径呈现为超链接,但引用空文件)。一个条目的HTML看起来类似于

<li>name_of_project1. C:/very/ugly/<a class="el" href="da/ddd/README_8md.html">source/path/name_of_project1/README.md</a></li>

所以

a)如何将my中的markdown文件的绝对路径转换为工作的@ref目标(它还将第一个标题显示为链接文本)。请记住,上述文件路径是 source-directory ,因此doc文件将位于完全不同的位置。

OR

b)我必须在我的REGISTER_TARGET CMake宏中序列化哪些信息,然后可以在这样的超链接中进行转换。

我知道这在理论上是可行的(OpenCV在相当similar way中完成它但我没有重现它)

0 个答案:

没有答案