Ответ 1
Об автоматической генерации документации на С++:
Прочитав как использовать sphinx, вы должны взглянуть на breathe:
Breathe обеспечивает мост между документацией Sphinx и Doxygen системы.
Это простой способ включить информацию Doxygen в набор документация, созданная Sphinx. Целью является создание автодока как поддержка людей, которым нравится использовать Sphinx, но работать с языками кроме Python. Система основана на выходе xox Doxygens.
Таким образом, вам нужно будет следовать Doxygen стиль комментариев и даже настроить проект doxygen. Но я пробовал это, и он работает очень хорошо после первоначальной настройки. Вот отрывок нашего CMakeLists.txt
, который может дать вам представление о том, как сфинкс и doxygen работают вместе:
macro(add_sphinx_target TARGET_NAME BUILDER COMMENT_STR)
add_custom_target(${TARGET_NAME}
COMMAND sphinx-build -b ${BUILDER} . sphinx/build/${BUILDER}
WORKING_DIRECTORY docs
DEPENDS doxygen
COMMENT ${COMMENT_STR}
)
endmacro(add_sphinx_target)
add_custom_target(doxygen
COMMAND doxygen docs/doxygen.conf
COMMENT "Build doxygen xml files used by sphinx/breathe."
)
add_sphinx_target(docs-html
html
"Build html documentation"
)
Итак, после первоначальной настройки, по существу, это сводится к:
- создать документацию doxygen с помощью
doxygen path/to/config
-
cd
в каталог, где находится конфигурация sphinx. - построить документацию sphinx с помощью
sphinx-build . path/to/output
В домене С++:
Sphinx - это "немного" больше, чем система для автоматической генерации документации. Я бы предложил вам посмотреть в примерах ( и подумайте, что сам сайт sphinx написан в коде sphinx reST). Особенно нажмите ссылку Show Source
на многих сгенерированных сфинксах страницах.
Поэтому, если вы не можете автоматически создавать документацию для проекта, вам нужно сделать это самостоятельно. В основном sphinx является реестром для любого (LaTeX, HTML,...) компилятора. Таким образом, вы можете написать сводный текст, но преимущество в том, что у него есть много команд для документирования исходного кода на разных языках. Каждый язык получает свой собственный домен (префикс или пространство имен) для разделения пространств имен на разных языках. Так, например, я могу документировать функцию python, используя:
.. py:function:: Timer.repeat([repeat=3[, number=1000000]])
Does something nasty with timers in repetition
(источник)
Я могу сделать то же самое с использованием домена cpp:
.. cpp:function:: bool namespaced::theclass::method(int arg1, std::string arg2)
Describes a method with parameters and types.
(источник)
Итак, если вы хотите документировать свой проект С++ без doxygen + дышать, но с sphinx, вам придется писать реструктурированные текстовые файлы самостоятельно. Это также означает, что вы разделяете документацию со своего исходного кода, что может быть нежелательным.
Я надеюсь, что это немного облегчит ситуацию. Для дальнейшего чтения я настоятельно рекомендую вам хорошо прочитать в учебник по sphinx и документация, пока вы не поймете, что она на самом деле делает.