Как управлять проектом Doxygen с несколькими библиотеками? - PullRequest
2 голосов
/ 26 мая 2010

Я работаю над проектом, который использует несколько библиотек, настроенных в такой структуре:

/ SRC
/ ЛИЭС / libOne
/ ЛИЭС / libTwo

Я хочу создать одну страницу Doxygen, которая охватывает весь мой код, а также библиотеки. Это было довольно просто, просто указав Doxygen в корне. Тем не менее, я хочу, чтобы вывод doxygen был сгруппирован, чтобы я мог ясно видеть, к какой библиотеке принадлежит каждый класс / файл. Однако, так как библиотеки не написаны мной, я не хочу менять их, чтобы добавлять комментарии \ addtogroup.

Я не возражаю, если созданная документация не подходит для библиотек (например, если они не содержат комментариев, совместимых с doxy), я все же хочу, чтобы они были включены, чтобы я могла просматривать графики вызовов, быстро просматривать классы и т. Д. .

Как можно сгруппировать код каждой библиотеки в модули без изменения источника библиотек?

спасибо

1 Ответ

2 голосов
/ 26 мая 2010

Вы должны поместить всю необходимую документацию во внешние файлы. Я не знал, как это сделать, но я пытался создать минимальную среду, подобную вашей, и она работала хорошо. Просто для документирования чего-то, что я взял пример кода на сайте Doxygen:

test1.h:

#define MAX(a,b) (((a)>(b))?(a):(b))
typedef unsigned int UINT32;
int errno;
int open(const char *,int);
int close(int);
size_t write(int,const char *, size_t);
int read(int,char *,size_t);

и написал совершенно бесполезный test2.h (просто чтобы иметь два разных файла ...):

void itdoesnothing();

А вот и хорошая часть. Я сделал внешний заголовок только для документирования вышеупомянутого, назвал его test_doc.h (опять же, только что использовал пример на сайте Doxygen):

/*! \addtogroup everything The main group
    This group contains everything.
    @{
*/

/*! \file test.h
    \brief A Documented file.

    Details.
*/

/*! \def MAX(a,b)
    \brief A macro that returns the maximum of \a a and \a b.
    Details.
*/

/*! \var typedef unsigned int UINT32
    \brief A type definition for a .
    Details.
*/

/*! \addtogroup err Error handling
Error handling related stuff
@{
*/

/*! \var int errno
    \brief Contains the last error code.
    \warning Not thread safe!
*/

/*! @} */

/*! \addtogroup fdrelated File description related
    File descriptor related stuff.
    @{  
*/  

/*! \fn int open(const char *pathname,int flags)
    \brief Opens a file descriptor.

    \param pathname The name of the descriptor.
    \param flags Opening flags.
*/

/*! \fn int close(int fd)
    \brief Closes the file descriptor \a fd.

    \param fd The descriptor to close.
*/

Это успешно задокументированы оба файла для Doxygen. Таким образом, вы также можете группировать файлы, пространства имен и т. Д., Как указано в руководстве:

Членами группы могут быть файлы, пространства имен, классы, функции, переменные, перечисления, определения типов и определения, а также другие группы.

Поэтому попробуйте тоже прочитать http://www.doxygen.nl/grouping.html и посмотреть, что можно сделать с вещами, которые я упомянул выше. Удачи!

...