\hypertarget{faq}{}\section{Frequently Asked Questions}\label{faq}
 \begin{enumerate}
\item 
{\bf How to get information on the index page in HTML?} 

 You should use the $\backslash$mainpage command inside a comment block like this: 

\footnotesize\begin{verbatim}
/*! \mainpage My Personal Index Page
 *
 * \section intro Introduction
 *
 * This is the introduction.
 *
 * \section install Installation
 *
 * \subsection step1 Step 1: Opening the box
 *  
 * etc...
 */
\end{verbatim}\normalsize 


\item 
{\bf Help, some/all of the members of my class / file / namespace  are not documented?}

Check the following: \begin{enumerate}
\item 
Is your class / file / namespace documented? If not, it will not  be extracted from the sources unless {\tt EXTRACT\_\-ALL} is set to {\tt YES} in the config file. \item 
Are the members private? If so, you must set {\tt EXTRACT\_\-PRIVATE} to {\tt YES} to make them appear in the documentation. \item 
Is there a function macro in your class that does not end with a  semicolon (e.g. MY\_\-MACRO())? If so then you have to instruct  doxygen's preprocessor to remove it.

This typically boils down to the following settings in the config file:



\footnotesize\begin{verbatim}
ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = YES
PREDEFINED             = MY_MACRO()=
      \end{verbatim}\normalsize 


Please read the \hyperlink{preprocessing}{preprocessing} section of the manual for more information. \end{enumerate}
\item 
{\bf When I set EXTRACT\_\-ALL to NO non of my functions are shown in the documentation.}

In order for global functions, variables, enums, typedefs, and defines  to be documented you should document the file in which these commands are located using a comment block containing a $\backslash$file (or @file)  command.

Alternatively, you can put all members in a group (or module) using the $\backslash$ingroup command and then document the group using a comment block containing the $\backslash$defgroup command.

\item 
{\bf How can I make doxygen ignore some code fragment?} 

 You can use Doxygen's preprocessor for this:  If you put 

\footnotesize\begin{verbatim}
#ifndef DOXYGEN_SHOULD_SKIP_THIS

 /* code that must be skipped by Doxygen */

#endif /* DOXYGEN_SHOULD_SKIP_THIS */
\end{verbatim}\normalsize 
 around the blocks that should be hidden and put: 

\footnotesize\begin{verbatim}
  PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
\end{verbatim}\normalsize 
 in the config file then all blocks should be skipped by Doxygen as long as {\tt PREPROCESSING = YES}.

\item 
{\bf How can I change what is after the {\tt \#include} in the class documentation?}

You can document your class like



\footnotesize\begin{verbatim}
/*! \class MyClassName include.h path/include.h
 *
 *  Docs for MyClassName
 */
\end{verbatim}\normalsize 


To make doxygen put \par
\par
 {\tt  include $<$path/include.h$>$ }

in the documentation of the class My\-Class\-Name regardless of the name of the actual  header file in which the definition of My\-Class\-Name is contained.

If you want doxygen to show that the include file should be included using brackets you should type: 

\footnotesize\begin{verbatim}
/*! \class MyClassName include.h "path/include.h"
 *
 *  Docs for MyClassName
 */
\end{verbatim}\normalsize 


\item 
{\bf How can I use tag files in combination with compressed HTML?}

If you want to refer from one compressed HTML file  {\tt a.chm} to another compressed HTML file  called {\tt b.chm}, the link in {\tt a.chm} must have the following format: 

\footnotesize\begin{verbatim}
<a href="b.chm::/file.html">
\end{verbatim}\normalsize 
 Unfortunately this only works if both compressed HTML files are in the same  directory.

As a result you must rename the generated {\tt index.chm} files for all projects into something unique and put all .{\tt chm} files in one directory.

Suppose you have a project {\em a} referring to a project {\em b} using tag file {\tt b.tag}, then you could rename the {\tt index.chm} for project {\em a} into {\tt a.chm} and the {\tt index.chm} for project {\em b} into {\tt b.chm}. In the  configuration file for project {\em a} you write: 

\footnotesize\begin{verbatim}
TAGFILES = b.tag=b.chm::
\end{verbatim}\normalsize 
 or you can use {\tt installdox} to set the links as follows: 

\footnotesize\begin{verbatim}
installdox -lb.tag@b.chm::
\end{verbatim}\normalsize 


\item 
{\bf I don't like the quick index that is put above each HTML page, what do I do?}

You can disable the index by setting DISABLE\_\-INDEX to YES. Then you can put in your own header file by writing your own header and feed that to HTML\_\-HEADER.

\item 
{\bf The overall HTML output looks different, while I only wanted to  use my own html header file}

You probably forgot to include the stylesheet {\tt doxygen.css} that  doxygen generates. You can include this by putting 

\footnotesize\begin{verbatim}
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
\end{verbatim}\normalsize 
 in the HEAD section of the HTML page.

\item 
{\bf Why does doxygen use Qt?}

The most important reason is to have a platform abstraction for most  Unices and Windows by means of the QFile, QFile\-Info, QDir, QDate,  QTime and QIODevice classes.  Another reason is for the nice and bug free utility classes, like QList,  QDict, QString, QArray, QText\-Stream, QReg\-Exp, QXML etc.

The GUI front-end doxywizard uses Qt for... well... the GUI!

\item 
{\bf How can I exclude all test directories from my directory tree?}

Simply put an exclude pattern like this in the configuration file:



\footnotesize\begin{verbatim}
EXCLUDE_PATTERNS = */test/*
\end{verbatim}\normalsize 


\item 
{\bf Doxygen automatically generates a link to the  class My\-Class somewhere in the running text.  How do I prevent that at a certain place?}

Put a \% in front of the class name. Like this: \%My\-Class. Doxygen will then remove the \% and keep the word unlinked.

\item 
{\bf Help! I get the cryptic message  \char`\"{}input buffer overflow, can't enlarge buffer because scanner uses REJECT\char`\"{}}

This error happens when doxygen lexical scanner has a rules that matches more than 16K input character in one go. I've seen this happening  on a very large generated file ($>$16K lines), where the built-in preprocessor  converted it into an empty file (with $>$16K of newlines). Another case where this might happen is if you have lines in your code with more than 16K characters.

\item 
{\bf How did doxygen get it's name?}

Doxygen got its name from playing with the words  documentation and generator.



\footnotesize\begin{verbatim}
documentation -> docs -> dox
generator -> gen
\end{verbatim}\normalsize 


At the time I was looking into lex and yacc, where a lot of things start with \char`\"{}yy\char`\"{}, so the \char`\"{}y\char`\"{} slipped in and made things pronouncable.

\end{enumerate}


