Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Markdown Doxygen:html输出中头文件的标记链接被破坏_Markdown_Doxygen - Fatal编程技术网

Markdown Doxygen:html输出中头文件的标记链接被破坏

Markdown Doxygen:html输出中头文件的标记链接被破坏,markdown,doxygen,Markdown,Doxygen,我的标记文件中的大多数链接都由Doxygen(Fedora 28上的1.8.14版)正确呈现,例如: [utils](src/thing/utils/README.md) 尽管Doxygen的html版本自述文件的路径很神秘,但Doxygen会解析它,链接也会工作。但是,当我链接到头文件时,Doxygen会生成一条奇怪的相对路径,而这条路径却毫无用处: [Widget.hpp](src/thing/utils/Widget.hpp) 在github上,此链接起作用,但Doxygen生成的ht

我的标记文件中的大多数链接都由Doxygen(Fedora 28上的1.8.14版)正确呈现,例如:

[utils](src/thing/utils/README.md)
尽管Doxygen的html版本自述文件的路径很神秘,但Doxygen会解析它,链接也会工作。但是,当我链接到头文件时,Doxygen会生成一条奇怪的相对路径,而这条路径却毫无用处:

[Widget.hpp](src/thing/utils/Widget.hpp)
在github上,此链接起作用,但Doxygen生成的html中的路径是:

../../src/thing/utils/Widget.hpp

我想让Doxygen解析它为
Widget.hpp
生成的html文档页面的链接。有没有办法做到这一点,并保持与github的兼容性?如果需要Doxygen预处理器,甚至需要我自己的预处理脚本(在Doxygen之前运行,并将
README.md
的临时副本中的链接更改为Doxygen能够理解的内容),我可以接受。

有点困难

文件README.md由doxygen翻译并使用结果。widget.hpp也会被翻译,但由于不清楚链接什么,即源代码或文档,因此参考了原始文件,但在结果树中,该文件被视为可在该位置的HTML树中找到的文件

因此,您最好在HTML目录中创建路径,并将文件复制到该位置


另外,最好在doxygen issue tacker()中创建一个问题,附带一个小的、自包含的示例(tar或zip中的source+config文件;请不要引用外部源),以允许重现该问题。

好的,很好。我可以为HTML目录中的路径创建一个软链接(比如
ln-s
),而不是在那里复制一个Doxygen生成的文件吗?感谢您的建议。我认为这将起作用(从未尝试过,也不确定Windows),只有当将结果复制到另一个地方时,您才不必忘记将文件也复制到另一个地方。一个小的罪魁祸首可能是,当更新源代码而不是文档时,它们可能不同步。不,这不是问题所在。这些链接从Doxygen生成的伪路径转到Doxygen生成的正确html文件。因此,不会涉及外部文件(即原始源代码树中的源代码),也不会复制或同步。但是我很难让Doxygen在生成html后调用我的命令。我希望用户能够运行
doxygen-Doxyfile
并获得完整的html。当然,我可以编写一个单独的包装器脚本,但是一个不知情的用户可能会运行
doxygen-Doxyfile
,然后怀疑断开的链接。在doxygen中没有后期处理的可能性,必要时我总是使用脚本/Makefile。关于
doxygen-Doxyfile
我创建了一个doxygen.bat(Windows),它可以做一些事情并调用真正的doxygen.exe,还可以做一些后期处理,但后者当然会影响所有的doxygen运行)。在*nix系统上也可能出现类似的情况(甚至可能有别名)。软链接不起作用,html文件的普通
cp
也不起作用,因为Doxygen在html文件中使用相对路径,并且伪路径的深度与正确放置的html文件不同。所以我改为修补html文件,这种方法在我的机器上确实有效,我认为应该可以在*nix之间移植。如果Doxygen只给我一个回调来覆盖链接生成(理想情况下,和其他所有文档组件一起生成),那就更好了。。。但是不管怎样。如果任何人都觉得它有用,这个命令将从Doxygen html文件树恢复原始的头文件名:
find doc/Doxygen/html-name“*8hpp\.html”\124; sed-e“s/.*.\/\(\U\?[^/]\+\)\.html$/\1/“-e”s/\u8hpp/“-e”s/\([a-z]\/\U\1/g”
,作为解决这个问题的参考:
[Widget.hpp](@ref Widget.hpp)
将适用于Doxygen(但可能不适用于GitHub)。