Як зробити сторінку вступу за допомогою Doxygen


102

Я зробив документацію для свого SDK, використовуючи Doxygen. Він містить список файлів, просторів імен, класів, типів тощо - все, що я розміщував як коментарі Doxygen у коді. Тепер я хочу написати загальну інформацію про SDK (вид вступу), яка не пов'язана безпосередньо з будь-яким елементом коду. Я хочу розмістити це вступ на початковій сторінці документації. Як я можу це зробити?


Відповіді:


95

Погляньте на mainpageкоманду.

Також перегляньте цю відповідь на інший потік: Як включити власні файли в Doxygen . Він стверджує , що є три розширення , які Doxygen класів в якості додаткових файлів документації: .dox, .txtі .doc. Файли з цими розширеннями не відображаються в індексі файлів, але їх можна використовувати для включення додаткової інформації у вашу остаточну документацію - дуже корисно для необхідної документації, але її не дуже доцільно включати у свій вихідний код (наприклад, FAQ)

Тому я рекомендую мати mainpage.doxу своєму проекті каталог (або аналогічний ім'я) файл, щоб представити вам SDK. Зауважте, що всередині цього файлу потрібно помістити один або кілька блоків коментарів у стилі C / C ++.


3
Принаймні файли розмітки ( .mdі .markdown) також розглядаються як додаткові файли документації. Я вважаю за краще їх, .doxтому що їм не потрібні коментарі до оточуючих кодів і їх можна добре редагувати за допомогою редактора розмітки - без недоліків.
Паскаль

56

Станом на v1.8.8 є також варіант USE_MDFILE_AS_MAINPAGE. Тому не забудьте додати свій індексний файл, наприклад README.md , INPUTі встановити його як значення цього параметра:

INPUT += README.md
USE_MDFILE_AS_MAINPAGE = README.md

4
На додаток до цього, якщо ви збираєтесь використовувати README.md в якості основної сторінки, переконайтеся, що вона посідає перше місце у списку ВХОД. Коли є кілька кандидатів на головну сторінку, вибирається перший, що виникає під час розбору, або приблизно так.
Лестер Пібоді

2
До речі, у doxygen gui потрібно лише включити .md-файл під експертний> input> input.
Адріан Лопес

USE_MDFILE_AS_MAINPAGEне працював для мене. Відповідно до документації, ви повинні включити {#mainpage}після назви документа розмітки. Це спрацювало.
samvv

2
@samvv Я не додав зайвих до документа розмітки. Я щойно використовував INPUT = README.mdтоді INPUT += src(за поданням пропозиції @ Лестера), USE_MDFILE_AS_MAINPAGE = README.mdі це працювало як шарм. Версія: $ doxygen --versionповертається 1.8.11до мене.
Хаві Монтеро

1
У Doxygen 1.8.2 єдине, що працювало, - це додавання \mainpageвсередину (це можна зробити в коментарях (див. Це посилання про коментарі в MarkDown). Це все ще створило область пов’язаних сторінок із заповнювачем місця (порожній). Це дратує, але принаймні, я отримав головну сторінку
Євген

55

Зауважте, що з випуском Doxygen 1.8.0 ви також можете додавати відформатовані сторінки Markdown. Для цього вам потрібно створити сторінки з a .mdабо .markdownрозширенням та додати наступне до конфігураційного файлу:

INPUT += your_page.md
FILE_PATTERNS += *.md *.markdown

Докладніше див. У http://www.doxygen.nl/manual/markdown.html#md_page_header .


6
Насправді поточна підтримка версії 1.8.0, розмітка підтримки, але НЕ розглядає їх як документацію. Таким чином, ви закінчите класи розмітки, перелічені в розділі Файли та каталоги. Рішення полягає в тому, щоб додати dox=mdяк EXTENSION_MAPPINGі перейменувати свої розширення розмітки в .dox. Отже, конфігурація виглядатиме так:INPUT += your_page.dox EXTENSION_MAPPING += dox=md
antitoxic

6
Гарна думка. Я виправлю це так, що .md та .markdown трактуються аналогічно .dox.
doxygen

4
На жаль, це закінчується під пов'язані сторінки, а не як на головній сторінці
Evgen

7

Наступний синтаксис може допомогти додати головну сторінку та пов’язані підсторінки доксигену:

/*! \mainpage Drawing Shapes
 *
 * This project helps user to draw shapes.
 * Currently two types of shapes can be drawn:
 * - \subpage drawingRectanglePage "How to draw rectangle?"
 *
 * - \subpage drawingCirclePage "How to draw circle?"
 *
 */ 

/*! \page drawingRectanglePage How to draw rectangle?
 *
 * Lorem ipsum dolor sit amet
 *
 */

/*! \page drawingCirclePage How to draw circle?
 *
 * This page is about how to draw a circle.
 * Following sections describe circle:
 * - \ref groupCircleDefinition "Definition of Circle"
 * - \ref groupCircleClass "Circle Class"
 */

Створення наступних груп також допомагає розробляти сторінки:

/** \defgroup groupCircleDefinition Circle Definition
 * A circle is a simple shape in Euclidean geometry.
 * It is the set of all points in a plane that are at a given distance from a given point, the centre;
 * equivalently it is the curve traced out by a point that moves so that its distance from a given point is constant.
 * The distance between any of the points and the centre is called the radius.
 */

Приклад можна знайти тут


@FelixSFD дякую за відгук. Я оновив свою відповідь відповідно до вашої відповіді.
Birol Capa

5

Додайте будь-який файл у документацію, яка буде містити ваш вміст, наприклад toc.h :

@ mainpage Manual SDK
<hr/>
@ section pageTOC Content
  -# @ref Description
  -# @ref License
  -# @ref Item
...

І у вашому Doxyfile:

INPUT = toc.h \

Приклад (російською):


1
Масштабні технічні посилання зараз мертві.
Бен Фултон

3

Я спробував все вище з v 1.8.13 безрезультатно. Що працювало для мене (на macOS) - використовувати тег doxywizard-> Expert для заповнення USE_MD_FILE_AS_MAINPAGEналаштування.

У моєму Doxyfile було внесено такі зміни:

USE_MDFILE_AS_MAINPAGE = ../README.md
...
INPUT                  = ../README.md \
                         ../sdk/include \
                         ../sdk/src

Зверніть увагу на припинення рядка для INPUT, я щойно використовував простір як роздільник, як зазначено в документації. АФАКТИЧНО - це єдина зміна між непрацюючою та робочою версією Doxyfile.


1
уточнення - doxywizard - це передній інтерфейс GUI, який встановлюється на macOS.
VorpalSword

Мені довелося додати \ mainpage, щоб README.md був визнаний
основною
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.