使用Doxygen版本1.8.4:
当配置文件中的AUTOLINK_SUPPORT = NO时,由 这似乎是对doxygen行为的一个相对较新的变化:我多年来一直在使用AUTOLINK_SUPPORT = NO,以避免必须在描述文本中标记所有单词,否则会导致与&的不希望的自动链接#39;%'字符,参见参考文献仍然是活动链接。 是否有一种已知的解决方法可以使\ sa引用保持活动链接,同时仍禁用全局AUTOLINK_SUPPORT? 这是一个简单的测试文件: 使用自动生成的Doxyfile(doxygen -g)doxygen版本1.8.8在没有任何警告的情况下生成预期的HTML结果:{@link bar(int,int)const the bar method}语法导致链接命名"条形方法" (对于其他@link也是如此),并且@see引用了具有方法签名的预期链接。 如果Doxyfile被更改,那么AUTOLINK_SUPPORT = NO doxygen现在生成HTML,其中@see签名不再是链接,但在其他方面是相同的。 如果"条形法"从第一个@link命令doxygen输出 - 生成的HTML只有单词" const"作为html / classFooy.html文件的链接,而不是方法签名和正确的链接。但是,如果在方法签名的参数列表中的逗号之后删除了单个空格,则警告将消失,并且链接现在与完整签名文本一致。注意空格字符
在第二个@link命令的foo参数列表中必须保留一个正确的签名,因此删除文本" foo方法"从命令总是会导致doxygen解析不正确。恢复AUTOLINK_SUPPORT = YES不会更改此行为。这表明doxygen解析器存在缺陷。 回到最初的问题,即在Doxyfile中的AUTOLINK_SUPPORT = NO时,将@see引用作为HTML输出中的链接。将方法签名放在{@link ...}包装器内的@see命令中会失败,如上所述(只有方法签名没有空格字符才能正常工作)。如果使用新的@link ... @endlink语法(以及与其他{@link ...}命令一起使用的新语法)替换包装器,则doxygen的HTML输出是具有完整方法签名和正确的预期结果链接。 因此,问题的答案是doxygen与以前的代码内命令语法不向后兼容。除非知道某些解决方法,否则必须编辑所有现有代码文件以适应对doxygen解析器的更改。 叹息。/** The Fooy class.
*/
class Fooy
{
public:
/** foo
The alternative is {@link bar(int, int)const the bar method}
@param value A value.
@return The value incremented.
@see bar(int, int)const
*/
int foo (const int value) const;
/** bar
The alternative is {@link foo(const int)const the foo method}
@param value A value.
@param number A number.
@return The value plus the number.
@see foo(const int)const
*/
int bar (int value, int number) const;
};
Fooy.hh:9: warning: unable to resolve link to `bar(int, int)' for \link command