我试图用以下文件记录一个库:
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
Doxyfile:
PROJECT_NAME = mylib
INPUT = .
RECURSIVE = YES
MACRO_EXPANSION = YES
氧气产生以下警告:
Doxygen version used: 1.9.3 (c0b9eafbfb53286ce31e75e2b6c976ee4d345473)
[...]
include/mylib/SomeClass.h:7: warning: Compound mylibns::SomeClass is not documented.
*** Doxygen has finished
如果我执行以下任何操作,它都可以工作:
- 移动cpp到
include/
。但是我不希望它在那里。 - 将文档移动到标题。但是我想保持简短。
-
namespace mylibns {
代替cpp中的宏。但是我希望命名空间是可配置的。 -
MACRO_EXPANSION = NO
。但这也会从文档中删除命名空间。 - 在氧注释中显式地声明名称空间:
class mylibns::SomeClass
。然而,这只有助于解决这个特定的问题(氧也无法解决过载的功能)。
没用的东西:
- 为
INPUT
参数指定任意较长的路径组合。 -
EXTRACT_ALL = YES
-
CLANG_ASSISTED_PARSING = YES
我如何正确地做到这一点?
在文件source/SomeClass.cpp
中,您有:
#include "mylib/SomeClass.h"
但是文件SomeClass.h
位于include/mylib
中,所以你必须告诉氧在哪里找到包含文件。这可以通过以下设置来实现:
INCLUDE_PATH = include
(类似于您对编译器所做的设置,如-I include
)