用Doxygen生成文档

我是生成C/C++的文档,输出html格式的文档。就不做成CHM了。

注释要这种写:(当然,有数种注释风格,选择任意你喜欢的就行)

1 /**

2 *

3 *    一系列的doxygen的 command

4 *

5 *

6 */

具体参考这里:http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html

我常用的就@class   @brief   @enum   @fn  @return @throws  @param[in]  @param[out]   @date  @file  @warning 

所有指令的参考:http://www.stack.nl/~dimitri/doxygen/manual/commands.html#cmd_intro

如果要支持以上注释风格的文档化,必须在DoxyFile(配置文件)中的变量 JAVADOC_AUTOBRIEF 设置为YES。

下面是源文件注释的样例参考:’

  1 /**

  2 *  @file novella.h

  3 *  @brief 控制Novella变频器

  4 *  @author Alex Chen

  5 *  @version 1.0  

  6 * @date 2015-7-19

  7 */

  8 

  9   

 10 #ifndef NOVELLA_H

 11 #define NOVELLA_H

 12 

 13 #include <string>

 14 #include "snmp_pp/snmp_pp.h"

 15 

 16 #define  NOVELLA_EXPORT

 17 

 18 #ifdef NOVELLA_EXPORT

 19 #define   NOVELLA_API __declspec(dllexport)

 20 #else

 21 #define NOVELLA_API //__declspec(dllimport)

 22 #endif

 23 

 24 class CSerialPort;

 25 

 26 typedef int BOOL;

 27 #define bTRUE 1

 28 #define bFALSE 0

 29 

 30 template   class  __declspec (dllexport) std::basic_string<char>;

 31 

 32 /**

 33 *  @class Novella

 34 *  @brief 访问控制变频器的类

 35 */

 36 class NOVELLA_API Novella{

 37 

 38 public:

 39     /**

 40     *    @enum PROTOCOL

 41     *    @brief 与设备通信的协议类型

 42     */

 43     enum PROTOCOL

 44     {

 45         SERIAL_PORT,  /**< 串口 */

 46         SNMP,         /**< SNMP协议 */

 47         NETWORK       /**< 网络协议,目前无效保留参数*/

 48     };

 49 

 50   

 51     /**

 52     *    用于初始化串口的构造函数。并打开设备。

 53     *    @fn Novella(const std::string &comName, char dev_addr, const PROTOCOL& protocol, int baud = 9600, char parity = 'N', int databits = 8, int stopbits = 1)

 54     *    @param[in] comName 串口名,大小写不敏感。

 55     *    @param[in] dev_addr 变频器的设备地址,地址的形式是字符A,B,C,D,E ,依此类推。目前只支持到E。

 56     *    @param[in] protocol 使用何种协议对设备进行访问

 57     *   @param[in] baud 波特率

 58     *   @param[in] parity 校验位

 59     *   @param[in] databits 数据位

 60     *   @param[in] stopbits 停止位

 61     *    @throws -1 打开串口失败

 62     */

 63     Novella(const std::string &comName, char dev_addr, const PROTOCOL& protocol, int baud = 9600, char parity = 'N', int databits = 8, int stopbits = 1);

 64     

 65     /**

 66     *    用于初始化SNMP协议的构造函数。并打开设备

 67     *    @fn Novella(const std::string &ip,const std::string &dev_type, const PROTOCOL& protocol)

 68     *    @param[in] ip 设备的IP地址。

 69     *    @param[in] protocol 使用何种协议对设备进行访问。

 70     */

 71     Novella(const std::string &ip, const PROTOCOL& protocol);

 72     

 73     /**

 74     *    析构函数,关闭设备。

 75     *    @fn ~Novella()

 76     */

 77     ~Novella();

 78     

 79     /**

 80     *    得到设备类型,目前为无效保留函数

 81     *    @fn std::string getDevType() const

 82     *    @return 返回值为设备类型

 83     */

 84     std::string getDevType() const;

 85     

 86     /**

 87     *    获取设备中心频点

 88     *    @fn int getFreq(int& freq)

 89     *    @param[out]  freq 频率值

 90     *    @return 返回值为-1表示失败,为0表示成功

 91     */

 92     int getFreq(int& freq);

 93     

 94     /**

 95     *    设置设备中心频点

 96     *    @fn int    setFreq(int freq)

 97     *    @param[in]  freq 频率值

 98     *    @return 返回值为-1表示失败,为0表示成功

 99     */

100     int    setFreq(int freq);

101 

102     /**

103     *    获取设备是否为远程模式

104     *    @fn int getRemote(bool& remote)

105     *    @param[out]  remote true为远程模式,false为本地模式

106     *    @return 返回值为-1表示失败,为0表示成功

107     */

108     int getRemote(bool& remote);

109     

110     /**

111     *    设置设备是否为远程模式

112     *    @fn int setRemote(bool remote)

113     *    @param[in]  remote true为远程模式,false为本地模式

114     *    @return 返回值为-1表示失败,为0表示成功

115     */

116     int setRemote(bool remote);

117     

118     /**

119     *    获取设备的衰减值

120     *    @fn int getAtten(int &atten)

121     *    @param[out]  atten 衰减值

122     *    @return 返回值为-1表示失败,为0表示成功

123     */

124     int getAtten(int &atten);

125     

126     /**

127     *    设置设备的衰减值

128     *    @fn int setAtten(int atten)

129     *    @param[in]  atten 衰减值

130     *    @return 返回值为-1表示失败,为0表示成功

131     */

132     int setAtten(int atten);

133 

134     /**

135     *    获取设备是否为静音模式

136     *    @fn int getMute(bool &mute)

137     *    @param[out]  mute  true为静音模式,false为非静音模式

138     *    @return 返回值为-1表示失败,为0表示成功

139     */

140     int getMute(bool &mute);

141     

142     /**

143     *    设置设备是否为静音模式

144     *    @fn int setMute(bool mute)

145     *    @param[in]  mute  true为静音模式,false为非静音模式

146     *    @return 返回值为-1表示失败,为0表示成功

147     */

148     int setMute(bool mute);

149 

150     /**

151     *    获取设备的Spectrum状态

152     *    @fn int getInvert(bool &invert)

153     *    @param[out]    true为Invert,false为为Preserve

154     *    @return 返回值为-1表示失败,为0表示成功

155     */

156     int getInvert(bool &invert);

157     

158     /**

159     *    获取设备的Spectrum状态

160     *    @fn int setInvert(bool invert)

161     *    @param[in]    true为Invert,false为Preserve

162     *    @return 返回值为-1表示失败,为0表示成功

163     */

164     int setInvert(bool invert);

165 

166     

167 

168 private:

169 

170     ////////////////////////SerialPort/////////////////////

171     //status request

172     void StatusRequestCommand(char addr);

173 

174     int FreqGet(int &freq);

175     int AttenGet(int &adde);

176     int MuteGet(BOOL &mute);

177     int RemoteGet(BOOL &remote);

178     int InvertGet(BOOL &invert);

179 

180 

181     bool SerialSend(char *ch);

182     bool SerialRead(char *data);

183 

184     int Command_5bit(char conaddr, char com);

185 

186     ////////////////////////////////snmp///////////////

187 

188     std::string get_param(const char *param, std::string value);

189     int get_param(const char *param, int &value);

190     void set_param_int(const char *param, int value);

191 

192 

193 private:

194 

195     

196     ////////////////////////////SerialPort//////////////////////////

197     

198     CSerialPort *m_serialPort;

199 

200 

201     char m_dev_addr;

202     int m_freq;

203     int m_atten;

204     

205     bool m_isRemote;

206     bool m_isInvert;

207     bool m_isMute;

208     bool m_bSerialPortOpened;

209     

210     std::string m_devType;

211     std::string m_comName;

212     std::string m_ip;

213     

214     PROTOCOL m_currentProtocol;

215 

216 

217     ////////////////////////////////snmp//////////////////////////

218 

219 

220     std::string m_unitname;

221     BOOL m_remote;

222     BOOL m_invert;

223     BOOL m_mute;

224 

225 

226     //----------snmp parameters----------------------

227     snmp_version version;

228     int retries;

229     int timeout;

230     u_short port;

231 

232     UdpAddress *nfcaddress;

233     Snmp *snmp;

234     CTarget *ctarget;

235 

236     

237 

238 };

239 

240 #endif
View Code

 

配置文件用DoxyGen自带的GUI前端工具生成个配置文件的框架(front-end工具说明在这里:http://www.stack.nl/~dimitri/doxygen/manual/doxywizard_usage.html),然后自己用文本编辑器改就行了。就不做介绍了。

这里有配置文件的变量开关的作用介绍:http://www.stack.nl/~dimitri/doxygen/manual/config.html

一般我就用到

PROJECT_NAME  = 你的工程名

FILE_PATTERNS  = 如果是C/C++的,就设置为

1 FILE_PATTERNS          = *.c \

2                          *.cc \

3                          *.cxx \

4                          *.cpp \

5                          *.c++ \

6                          *.h \

7                          *.hxx \

8                          *.hpp \

 

PROJECT_BRIEF  = 你的工程简介

OUTPUT_DIRECTORY = 工程文档生成输出的目录路径

OUTPUT_LANGUAGE = 文档的语言,如果是中文就设成Chinese

JAVADOC_AUTOBRIEF = 一般设置为YES

DOXYFILE_ENCODING = DoxyFile文件本身的编码格式,用UTF-8不带BOM

INPUT  = 源文件的路径,一般DoxyFile也放这个路径下

INPUT_ENCODING = 源文件的编码,一般用UTF-8不带BOM

RECURSIVE = 一般设置为YES,这样可以递归处理源文件子目录

EXCLUDE_PATTERNS = 用来设置忽略子目录的。就是不把某目录,或者文件,当作输入文件,不想文档化的东西可以包含进来

1 EXCLUDE_PATTERNS       = */snmp++/* \

2                          */Debug/*  \

3                          */ipch/*    \

比如以上是VS系列的东西,Debug,和ipch,SNMP++里面的东西我不想文档化。

 

INLINE_SOURCES         = 文档内嵌代码接口实现,一般我设置为YES。如果公开给客户,需要关闭吧,设置为NO

STRIP_CODE_COMMENTS    = 一般设置为YES,忽略非特殊格式的注释,就是普通注释

 

GENERATE_HTML = 设置为YES,如果需要要生成html格式的
HTML_OUTPUT = html   
HTML_FILE_EXTENSION = .html      html格式的文件后缀

 

一般以下几个变量我都会设置为YES,调用关系图和包含关系图等。

INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = YES
CALLER_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES

 

 

最后配置文件写完了就是使用doxygen命令:

doxygen [DoxyFile]

具体参考这里用法:http://www.stack.nl/~dimitri/doxygen/manual/doxygen_usage.html

 

 

可能用到的额外工具:

iconv------这个用来递归处理某路径下源文件的编码转换。这样在用Doxygen文档化源代码

 

references:

http://blog.csdn.net/fmddlmyy/article/details/1663898

你可能感兴趣的:(生成)