标签: doxygen

Doxygen/C++:命名空间列表中的全局命名空间

我可以在 Doxygen 生成的文档的命名空间列表中显示全局命名空间吗?我有一些函数extern "C",它们出现在声明它们的头文件的文档中,但不在命名空间列表中,给人的印象是它们并不真正存在......

c++ doxygen global-namespace

5
推荐指数
1
解决办法
1805
查看次数

Doxygen:如何使用 EXPAND_AS_DEFINED

我定义了以下宏,并尝试在生成文档时扩展它。

#define GETSET(param) \
bool CYNOVE_Enable##param(postproc_ctx_t ctx, bool enable)  \
{                                                           \
 struct postproc_ctx * c;                                   \
 c = (struct postproc_ctx *)ctx;                            \
 c->do_##param = enable?1:0;                                \
 return TRUE;                                               \
}                                                           \
Run Code Online (Sandbox Code Playgroud)

在 doxygen 中,如果我使用:

MACRO_EXPANSION = YES
Run Code Online (Sandbox Code Playgroud)

然后当我使用宏时它会被扩展。但是如果设置:

MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
EXPAND_AS_DEFINED = GETSET
Run Code Online (Sandbox Code Playgroud)

宏未展开

因为我认为,其中一个答案是错误的,但评论对于任何冗长的解释来说都很糟糕,让我补充一下我认为这应该如何工作。

根据 doxygen 文档和此链接,PREDEFINED 和 EXPAND_AS_DEFINED 有不同的用途。我理解 EXPAND_AS_DEFINED 用于选择性地扩展给定的宏“因为它是在源代码中定义的”,因此得名,而 PREDEFINED 在这里赋予 Doxygen 宏的含义。

c doxygen

5
推荐指数
1
解决办法
2524
查看次数

如何标记@ref 引用的结尾?

我正在使用 Doxygen 来记录 C++ 代码,并且正在为代码编写大量 Doxygen 文档。在一个地方,我在代码中制作了一个组列表,并希望它显示如下:

我的文档来源如下所示:

- @ref CM:控制一切的模块
- @ref SM:作为@CM 从属的模块

但是,问题:Doxygen 似乎将参考名称读取为CM:,而不是CM,因此找不到参考。所以,不知何故,我需要告诉 Doxygen 参考名称在哪里结束。(例如,如果我使用 Bash,并且想要回显带有“s”作为后缀的变量字符串,我会使用echo "${NOUN}s".)

作为一种解决方法,我可以在名称和后面的冒号之间添加一个空格,但这会使生成的文档更难阅读,我想避免它。

Special Commands 下,Doxygen 手册包含以下听起来充满希望的信息:

一些命令有一个或多个参数。每个参数都有一定的范围:

  • 如果使用 <sharp> 大括号,则参数是单个单词。
  • 如果使用(圆)大括号,则参数将扩展到找到命令的行的末尾。
  • 如果使用 {curly} 大括号,则参数会扩展到下一段。段落由空行或节指示符分隔。

好的,这一切都很好,但是文档没有说,我也想不通,这些大括号应该放在哪里。仅围绕争论?围绕整个命令和参数?两者都不起作用,我想不出一个可行的替代方案。

那么,我如何指示 Doxygen 引用名称的结尾?如果大括号是答案,它们会去哪里?

c++ documentation doxygen

5
推荐指数
2
解决办法
747
查看次数

如何将 Visual Studio 注释期望与具有 Doxygen 注释的代码相协调?

为 Doxygen 处理编写的代码有这样的行是正常的。

int myVariable; ///< description of myVariable
Run Code Online (Sandbox Code Playgroud)

但是,当 Visual Studio(例如 VS 2015)使用这些 Doxygen 注释准备的代码时,其工具提示信息myVariable将显示

XML comment contains invalid XML: Whitespace is not allowed at this location.

问题似乎是紧跟在“//”之后的“<”的存在。这似乎被 Visual Studio 解释为信号(格式不正确)的 XML 内容。但是,此组合与“<”一起存在,以向 Doxygen 发出信号,表明该注释适用于该行上的前一项,而不是后一项。

假设我们正在讨论已经遵循 Doxygen 约定的现有代码体。很多地方已经这样写了。

有没有办法调整或教授或设置 Visual Studio,以便它将此类注释视为前一项的正常文档注释,以便它们出现在这些项目的工具提示中?

xml comments doxygen tooltip visual-studio

5
推荐指数
1
解决办法
306
查看次数

在 Doxygen 中引用模板参数的正确方法是什么?

一个后续问题:

在 Doxygen 中引用参数的正确方法是什么?

所以,对于参数,我们使用 @param

@param my_param the quick brown fox takes this parameter over the lazy dog
Run Code Online (Sandbox Code Playgroud)

然后我们可以使用它来引用它@p

@param my_other_param this is completely different from @p my_param , you know!
Run Code Online (Sandbox Code Playgroud)

现在,对于模板参数,我将替换@param@tparam. 应该用什么代替@p

c++ templates doxygen

5
推荐指数
1
解决办法
1002
查看次数

Doxygen TAGFILES 不会链接到外部文档

我的 Doxyfile 中的 TAGFILES 不会链接到外部文档。

在'doxygen -g'生成的配置文件中

~/tests/libd/Doxyfile
Run Code Online (Sandbox Code Playgroud)

以下几行从原来的修改为:

PROJECT_NAME           = "libd"
GENERATE_LATEX         = NO
GENERATE_TAGFILE       = libd.tag
Run Code Online (Sandbox Code Playgroud)

运行“doxygen”会生成一个文件

~/tests/libd/libd.tag
Run Code Online (Sandbox Code Playgroud)

和一个包含一些 html 页面的子目录

~/tests/libd/html/
Run Code Online (Sandbox Code Playgroud)

在另一个目录中,另一个由 'doxygen -g' 生成的配置文件

~/tests/app/Doxyfile
Run Code Online (Sandbox Code Playgroud)

从原来的修改为:

PROJECT_NAME           = "app"
GENERATE_LATEX         = NO
TAGFILES               = ../libd/libd.tag=../../libd/html
Run Code Online (Sandbox Code Playgroud)

运行“doxygen”会产生一个包含一些 html 页面的子目录

~/tests/app/html/
Run Code Online (Sandbox Code Playgroud)

但是,上述 html 页面不包含指向“libd” html 的链接。将 TAGFILES 行更改为

TAGFILES               =~/tests/libd/libd.tag=~/tests/libd/html
Run Code Online (Sandbox Code Playgroud)

或者

TAGFILES               = ../libd/libd.tag=../libd/html
Run Code Online (Sandbox Code Playgroud)

没有任何区别。

在网上搜索了很多,但找不到任何线索。是我的 doxygen 版本问题吗?还是我的配置错误?请指教。在此先感谢您的帮助。

doxygen

5
推荐指数
0
解决办法
733
查看次数

使用 doxygen 和 graphviz 跨多个文件生成 Javascript 函数调用图

我目前正在使用 Doxygen 和 Graphviz 为网站生成文档。该网站有许多 Javascript 文件,函数调用会传递到多个文件。当前生成的调用图被限制在每个单独的文件中。

有没有办法生成跨越多个文件的函数的调用图?我正在考虑使用cat连接我想要调用图跨度的所有文件,然后将其作为参数传递给 Graphviz 或 Doxygen 生成器,但我无法找到通过命令行生成调用图的方法。

例子

如果我有以下两个文件main.jssub.js

主文件

mainFunc(){
    subFunc();
}
Run Code Online (Sandbox Code Playgroud)

子.js

subFunc(){
    sayHi("hello");
}
sayHi(msg){
    console.log(msg);
}
Run Code Online (Sandbox Code Playgroud)

我希望能够生成如下所示的调用图:

[mainFunc] -> [subFunc] -> [sayHi]

即使它不是自动化的。看起来像这样的命令就可以了:

cat main.js sub.js | doxygen -makecall "mainFunc" -o myGraph.svg

javascript doxygen graphviz

5
推荐指数
0
解决办法
682
查看次数

Doxygen:记录静态 C 函数

使用 doxygen 可以static通过设置EXTRACT_STATICYES. 但是,有没有办法在文档中包含一些特定的静态函数?

我设法通过重新定义static关键字并在我希望包含在文档中的函数的声明中使用此定义来愚弄 doxygen ,但这并不是一个很好的方法。

#define STATIC static
STATIC void foo(void);
Run Code Online (Sandbox Code Playgroud)

c static doxygen function

5
推荐指数
0
解决办法
1745
查看次数

doxygen INSTALL 无法将文件“.../doxygen/build/bin/doxygen”复制到“/usr/local/bin/doxygen”

在尝试使 doxygen 工作时解决了一些初始问题后,我在遵循doxygen 安装教程时偶然发现了下一个错误。
到目前为止什么工作:(
git clone https://github.com/doxygen/doxygen.git
cd doxygen
mkdir build
cd build
sudo apt-get install flex它丢失了所以我之前必须安装它cmake
sudo apt-get install bison(它丢失了所以我之前必须安装它cmake
cmake -G "Unix Makefiles" ..
make

但是后来make install我收到以下错误:

test@test-VirtualBox:~/doxygen/build$ make install
[  1%] Built target md5
[ 19%] Built target qtools
[ 24%] Built target vhdlparser
[ 92%] Built target _doxygen
[ 98%] Built target doxycfg
[100%] Built target doxygen
Install the project...
-- Install configuration: …
Run Code Online (Sandbox Code Playgroud)

doxygen cmake ubuntu-14.04

5
推荐指数
1
解决办法
3190
查看次数

C/C++:注释“/*&lt; */”代表什么?

我有一个相当普遍的问题:我最近在 C/C++ 代码中看到许多#defines 被注释为“/*< ... */”,例如:

#define ARRSIZE(x)          (sizeof(x)/sizeof(x[0]))        /*< macro to determine the size of an array */
Run Code Online (Sandbox Code Playgroud)

我个人只在定义的评论中看到这一点,谷歌搜索也没有回答我的问题。那有什么意义吗?这只是常见的做法还是来自 Doxygen?还是有其他原因?

c c++ comments doxygen

5
推荐指数
1
解决办法
169
查看次数