Doxygen:剥离顶级命名空间
使用库 ABC 时,很自然地,所有名称都包含在同一顶级命名空间
中。是否可以从 class
名称中删除顶级 namespace
,但显示封闭的 namespace
?
When working with library ABC, it natural that all names are included into the same top level namespace
. Is it possible to remove top level namespace
from class
names, but show inclosed namespaces
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Doxygen 内部没有这样的选项。您仍然可以使用预处理器来使其工作。
您应该将此代码包含到一些公共标头中,并在 Doxygen 选项中设置预定义的
DOXY_PARSER
宏。此解决方法使库名称空间的使用不太方便,但并不是那么重要。There is no such option inside of Doxygen. Still you can use preprocessor to make it work.
You should include this code into some common header and set predefined
DOXY_PARSER
macro in Doxygen options. This workaround makes using of library namespace less convenient but it is not so crucial.之前的解决方案有一个普遍的问题,在使用Qt时无效。 moc'ing 进程不使用预处理器,并且不使用命名空间(导致编译时错误)。
一种可能的解决方案是使用#define QT_NAMESPACE lib_namespace,但它会将整个 Qt 移动到该命名空间。
下一个解决方案更通用(为了方便起见,我保留了宏名称):
其中
MOCED_FILE
是 mocs 专用的定义。如果您使用 CMake,则可以使用以下方式指定此类选项:There is a general problem with the previous solution, it is not valid when using Qt. The moc'ing process doesn't use the preprocessor and the namespace is not used (leading to a compile time error).
One possible solution would be to use a
#define QT_NAMESPACE lib_namespace
but it will move the whole Qt to that namespace.The next solution is more general (I've kept the macros name for convenience):
Where
MOCED_FILE
is a define exclusive for mocs. If you are using CMake, you can specify such option using: