繁体   English   中英

Doxygen:在 cpp 文件中记录 class 与单独的源和 header 目录,同时使用宏定义名称空间

[英]Doxygen: document a class in the cpp file with separate source and header directories while using macros to define namespaces

我正在尝试使用以下文件记录一个库:

include/mylib/mylib_global.h
include/mylib/SomeClass.h
source/SomeClass.cpp
Doxyfile

包括/mylib/mylib_global.h:

#pragma once
#define MYLIB_NAMESPACE_BEGIN namespace mylibns {
#define MYLIB_NAMESPACE_END   }

包括/mylib/SomeClass.h:

#pragma once
#include "mylib_global.h"

MYLIB_NAMESPACE_BEGIN

class SomeClass
{
public:
    SomeClass();
};

MYLIB_NAMESPACE_END

来源/SomeClass.cpp:

#include "mylib/SomeClass.h"

MYLIB_NAMESPACE_BEGIN

/*!
 * \class SomeClass
 * This is a sample class.
 */

/*!
 * This is a constructor.
 */
SomeClass::SomeClass()
{
}

MYLIB_NAMESPACE_END

文件:

PROJECT_NAME = mylib
INPUT = .
RECURSIVE = YES
MACRO_EXPANSION = YES

Doxygen 产生以下警告:

Doxygen version used: 1.9.3 (c0b9eafbfb53286ce31e75e2b6c976ee4d345473)
[...]
include/mylib/SomeClass.h:7: warning: Compound mylibns::SomeClass is not documented.
*** Doxygen has finished

如果我执行以下任何操作,它将起作用:

  • 将 cpp 移动到include/ 但我不想让它在那里。
  • 将文档移至 header。但我想保持简短。
  • namespace mylibns {而不是 cpp 中的宏。 但我希望命名空间是可配置的。
  • MACRO_EXPANSION = NO 但这也会从文档中删除命名空间。
  • 显式 state doxygen 注释中的命名空间: \class mylibns::SomeClass 然而,这只能帮助解决这个特定问题(doxygen 也无法解决重载函数)。

没有帮助的事情:

  • INPUT参数指定较长路径的任意组合。
  • EXTRACT_ALL = YES
  • CLANG_ASSISTED_PARSING = YES

我该如何正确地做到这一点?

在文件source/SomeClass.cpp中你有:

#include "mylib/SomeClass.h"

但是文件SomeClass.h位于include/mylib中,所以你必须告诉 doxygen 在哪里可以找到包含文件。 这可以通过设置来完成:

INCLUDE_PATH = include

(类似于您可能使用-I include之类的设置为编译器所做的事情)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM