MIRA
|
To document your package, add a folder named doc to your package. Then add a file with the ending .dox in the directory doc and put the following into that file.
/** \mainpage Domain MyDomain - Documentation \author Your Name \section FirstSection Bla, bla... \li A list item */
Then add the following CMake macro to your CMakeLists.txt.
MIRA_ADD_DOCUMENTATION(TargetName DIRS doc include src DEPENDS otherPackage )
TargetName must be an arbitrary target name. Under DIR add all directories that you want doxygen to search for files to parse. Under DEPENDS add targets of other domains/toolboxes that have also been added with the MIRA_ADD_DOCUMENTATION macro, if you use types of them and want doxygen to automatically add links to their documentation.
When documenting your unit, please use the following structure:
\section Units \subsection MyUnit1 \subsubsection Channels \paragraph Published - \channel{Channel1,std::string} Documentation of channel content \paragraph Subscribed - \channel{Channel2,std::string} \subsubsection Parameters - \member{MemberName, std::string} Documentation of member. - \property{PropertyName, std::string} Documentation of property. \subsubsection Transforms - \transf{SomeTransform} Documentation of the transform. \subsubsection Services \paragraph Required - \service{RequiredService1} \paragraph Published - \service{PublishedService1}
Note that in the code above some convenience aliases are used for documenting channels, members and properties, transforms and services.
Put a comment in the following format before your class:
/** * This first sentence is used as brief comment for my class. * * These sentences are displayed in the detailed section of the documentation. */ class MyClass { };
Please note, that the first sentence is automatically used as brief documentation.
Put a comment in the following format before your method:
/** * This sentences are used to describe the function of your method. * * @param[out] oParam The output value * @param[in] iParam1 Some input value * @param[in] iParam2 Another input value * @return The return value */ bool myMethod(int& oParam, const int iParam1, const ComplexClass& iParam2);
Please note, that the "[out]" and "[in]" specification for the parameters is optional. The parameter description in general is not mandatory.
Put the following comment
///@cond INTERNAL
before the code section you want to exclude and the following comment
///@endcond
after your code section. Example:
///@cond INTERNAL /** * A class that is used internally only and should not be included into the * public documentation. / class MyPrivateClass { }; ///@endcond
To add code examples (e.g. usage of a class) to your documentation use the following lines:
/** \code MyClass class; class.callThisFunction(); ... \endcode */
Create a file "YourModulesName.dox" in the include path of your module and add the following lines to that file:
/** @defgroup YourModulesName My Module // this is optional: @ingroup ModuleYourModuleBelongsTo */
In this file you can also add additional detailed information that are shown under "related pages", see How to add detailed information in related pages.
To add a class to your module just add
@ingroup YourModulesName
to the documentation of your class, function, macro, etc.
If you don't need an extra file for your module's documentation you can also add the
@defgroup YourModulesName My Module
command to any of your classes. However, make sure that it is added to one class only.
Create a file "YourModulesName.dox" in the include path of your module and add the following lines to that file:
/** \page MyRelatedPage This is My Related Page Add all the documentation here */
You can also add a module definition to that file, see How to group classes to a module.