c++ - 带有 *.in 文件的 Doxygen
问题描述
我用 *.in 文件生成函数
class Foo
{
public:
...
#define FUNCTION(returnType, getterName) \
returnType getterName(uint8_t iValue) const;
#include "Functions.in"
#undef FUNCTION
...
};
并想使用 Doxygen。Doxygen 配置如下所示:
...
INPUT = Path/To/Foo
...
FILE_PATTERNS = *.in \
*.c \
*.cc \
*.cxx \
*.cpp \
*.c++
...
SEARCH_INCLUDES = YES
...
INCLUDE_PATH = Path/To/Foo
...
我可以在文档中看到 *.in 文件,但看不到类中的函数。此外,Doxygen 会产生以下警告
Foo.h:10: warning: include file Functions.in not found, perhaps you forgot to add its directory to INCLUDE_PATH?
有人知道如何将 Doxygen 与 *.in 文件一起使用吗?实际上可以将 Doxygen 与生成的代码一起使用吗?
解决方案
如果您阅读Doxygen 预处理文档,您会看到
用作 doxygen 输入的源文件可以由 doxygen 的内置 C 预处理器解析。
和
默认情况下,doxygen 只进行部分预处理。也就是说,它评估条件编译语句(如#if)并评估宏定义,但它不执行宏扩展。
可以更改此默认行为:
如果你想扩展 CONST_STRING 宏,你应该将配置文件中的MACRO_EXPANSION标签设置为
YES
.
所以解决方案是不通过 Doxygen运行*.in
文件,而是将MACRO_EXPANSION
配置变量设置为YES
,宏将被完全展开,并且应该解析它们的展开。
推荐阅读
- c# - 隐藏 WPF DataGrid 中的元素
- arrays - 创建按钮数组
- django - 使用 Django Channels 进行协作文本编辑
- php - 网站无法上传主题,需要增加PHP
- r - 无法使用 R 3.6 在 ubuntu 18.04 中安装 phytools
- python - 使用 pyodbc 从 SQLAlchemy 连接到 Oracle 数据库
- python - 从 GoogleSheet 创建 Google BigQuery 表
- python - Flutter -> Flask SocketException(SocketException:操作系统错误:连接被拒绝,errno = 111,地址 = 127.0.0.1,端口 = 50484)
- python - 想从不同国家发送请求获取python
- python - Python Sqlite3 TypeError:“NoneType”对象不可下标