2009-05-07 4 views
43

Sphinx은 Python을위한 새로운 문서 도구입니다. 그것은 아주 좋아 보인다. 내가 궁금해하는 것은 :스핑크스를 사용하여 C++ 프로젝트를 문서화 한 사람이 있습니까?

  • 이것은 C++ 프로젝트를 문서화하는 데 얼마나 적당합니까?
  • 기존 문서 (예 : doxygen)를 Sphinx 형식으로 변환하기위한 도구가 있습니까?
  • Sphinx를 사용하는 C++ 프로젝트의 온라인/다운로드 가능한 예가 있습니까?
  • 스핑크스를 사용한 사람의 조언이 있으십니까?
+8

C + + 프로젝트에 Sphinx를 사용하게 되었습니까? 그렇다면 귀하의 경험은 어땠습니까? – AndyL

답변

11

우선 두 개의 디렉토리 트리, sourcebuild을 유지하십시오. 버전 관리하에 source을 입력하십시오. build을 버전 제어하에 두지 말고 설치의 일부로 다시 설치하십시오.

두 번째로 http://sphinx.pocoo.org/intro.html#setting-up-the-documentation-sources을 읽습니다.

연습용 문서 트리를 작성하려면 sphinx-quickstart을 사용하십시오. 어떻게 작동하는지 배우려면 며칠 동안 이걸 가지고 놀아 라. 그런 다음 SVN 디렉토리에서 실제 빌드를 다시 사용하십시오.

잘 계획된 트리에서 문서를 구성하십시오. 일부 섹션은 해당 섹션에 대해 "index.rst"가 필요하고 일부 섹션은 필요하지 않습니다. 섹션이 "독립 실행 형"인 방법에 따라 다릅니다.

최상위 레벨 index.rst은 다음과 같습니다.

.. XXX documentation master file, created by sphinx-quickstart on Wed Dec 31 07:27:45 2008. 

.. include:: overview.inc 

.. _`requirements`: 

Requirements 
============ 

.. toctree:: 
    :maxdepth: 1 

    requirements/requirements 
    requirements/admin 
    requirements/forward 
    requirements/volume 

.. _`architecture`: 

Architecture 
============ 

.. toctree:: 
    :maxdepth: 1 

    architecture/architecture 
    architecture/techstack 
    architecture/webservice_tech 
    architecture/webservice_arch 
    architecture/common_features 
    architecture/linux_host_architecture 

Detailed Designs 
================ 

.. toctree:: 
    :maxdepth: 3 

    design/index 


Installation and Operations 
=========================== 

.. toctree:: 
    :maxdepth: 1 

    deployment/installation 
    deployment/operations 
    deployment/support 
    deployment/load_test_results 
    deployment/reference 
    deployment/licensing 

Programming and API's 
===================== 

.. toctree:: 
    :maxdepth: 2 

    programming/index 

**API Reference**. The `API Reference`_ is generated from the source. 

.. _`API Reference`: ../../../apidoc/xxx/index.html 

.. note:: 
    The API reference must be built with `Epydoc`_. 

    .. _`Epydoc`: http://epydoc.sourceforge.net/ 

Management 
========== 

.. toctree:: 
    :maxdepth: 2 
    :glob: 

    management/* 


Indices and tables 
================== 

* :ref:`genindex` 
* :ref:`modindex` 
* :ref:`search` 

SVN Revision 
============ 

:: 

    $Revision: 319 $ 

참고로 API는 "포함"하지 않으며 일반적인 HTML 링크로 참조합니다.

스핑크스는 automodule이라는 아주 멋진 애드온을 가지고 있습니다.이 모듈은 문서 문자열을 파이썬 모듈에서 선택합니다.

업데이트 스핑크스 1.0부터 C 및 C++가 지원됩니다. http://sphinx.pocoo.org/

+0

정말 고마워. 스핑크스가 수업과 수업을 읽었을 때 수업 및 방법에 대한 의견을 표기 한 예가 있습니까? – Nick

+1

C++ 주석이 아닙니다. 스핑크스는 파이썬 모듈에서만 autodoc 주석을 찾을 수 있습니다. doxygen이 C++ 파일에서 주석 블록을 가져올 수있는 경우 해당 주석 블록에서 구조화 된 텍스트를 사용하고 doxygen에서 sphinx 로의 워크 플로우를 만들 수 있습니다. –

+1

C 코드에서 autodoc 주석을 찾지 못한다면 Sphinx와 같은 시스템을 사용해야하는 이유는 무엇입니까? 저의 순진한 이해는 사람들이이 시스템을 사용하는 주된 이유였습니다. – AndyL

22

으로는 herehere을 언급

    C++ 지원은/포맷/참조를 강조 관련이
  • 스핑크스의 기본은,하지에 코드 문서 추출
  • breathe
  • 를 참조 chrisdew 토론에서 개발 한

[아래에 삽입 수정] :

나는 산소 + 호흡 + 스핑크스 툴체인 (멀티 -10k) 10 개의 다른 모듈/도메인으로 구성된 C++ 라이브러리.내 바닥 라인은 다음과 같습니다 아직 완전히 사용할 수 없습니다

  1. 하지만
  2. 이, 그리고 가장 중요한 것은, 경우 현재 을받을 권리가 가치있는 OSS 프로젝트를 찾고 있습니다 약간의 시간을 자신을 기울이고 고려해야보고 계속하여 시각.

나에게 이러한 점을 정교 보자

  1. 나는 문제가 있었다 다음 doxygen이 마크 업 내에서

    • 라텍스 마크 업 (현재 지원되지 않습니다,하지만 쉽게 구현할 수 있어야한다)
    • 일부 파서 오류 (여러 함수 헤더 정의). 스핌 스 파서에서 오류가 발생하지만 테스트해도 문제가 없습니다. 은 스핑크스 C++ 코드 블록으로 직접 처리됩니다. 수정의 어려움에 대해서는 아무런 아이디어가 없습니다. 하지만 심각한 기능 차단기입니다.
    • 오버로드 된 식별자에 몇 가지 문제가 있습니다. 및/또는 네임 스페이스 및/또는 doxygen xml 출력 파일을 서로 다른 클래스에 같은 이름으로 지정하여 주소 지정 기능을 지원하는 것으로 보입니다. 그러나 하나의 클래스에 10 개의 오버로드 된 생성자 중 하나를 표시하거나 연결하면 infeasible ATM이 표시됩니다. 참조/연결의 경우에는 (아마도 일시적인) 스핑크스 레벨에 대한 제한이 있기 때문에 호흡은 에서 해결 될 수도 있고 그렇지 않을 수도 있습니다.
    • 현재 모든 클래스 (또는 모든 보호 된/개인) 클래스의 멤버를 표시 할 수있는 방법은 없습니다. 이것은 어떻게 든 다른 수정본 과 함께 소개되었으며 수리 하기엔 정말 사소해야합니다.
    • 더 일반적인 의미에서 ATM은 Doxygen의 xml 출력에 대한 다리임을 알고 있어야합니다. doxygen이 정확히 무엇을 출력하는지는 위의 제한 사항과 마찬가지로 과 같은 방식으로 이해하면 안됩니다. 이 오히려 정확히 제공,

      • 에없는 이상, 이하, 가능성은 하나의 거대한 페이지
      • 쇼 특정 기능, 회원, 구조체, 열거, 형식 정의에 하나 개 doxygen이 출력 도메인에있는 모든 덤프, 또는 클래스 인 인데 수작업으로 지정해야합니다. github 에 관한 전반적인 개념적 문제를 다루고 싶지는 않을 수도 있지만, 미래에 대한 힌트는 없습니다.
    • 제 생각에는
  2. , 완전한 기능의 주요 공백을 채울 것 호흡하고 꽤 멋진 길을 엽니 다. 그러므로 잠재 고객이 일 가능성이 높습니다.

  3. 나중에 창조자를 통한 유지가 심하게 내려갈 것으로 보인다. .따라서 회사에서 일하면서 호흡을하는 상사가 에게 호소하거나 시간을 보내고 이 정말 귀중한 프로젝트를 찾고 있다고 확신 할 수 있다면 포크로 생각하십시오! 제 (일치하는 CSS 스타일) 오래된 doxygen이 문서를 참조하는 주변 튜토리얼 같은 구조를 구축 :

최종 포인터로서, 또한 중간 솔루션을 제공 할 수 스핑크스의 doxylink있는 contrib 프로젝트, 주의 (나는 스핑크스와 look'n'feels에 대한 doxygen 문서 상단에 동일한 헤더를 삽입 할 수도 있다고 생각합니다.) 그렇게하면 프로젝트가 스핑크스와 의 친 화성을 유지하며 호흡이 완전히 끝나면 으로 이동할 수 있습니다. 그러나 다시 : 호흡이 당신의 의제에 맞으면 어떤 사랑을 보일 것을 고려하십시오.