Skip to content
  • Brad King's avatar
    Build Help documentation during CMake build using Sphinx · bfe07aa9
    Brad King authored
    Add a Utilities/Sphinx directory to hold CMake build code to run the
    Sphinx (sphinx-doc.org) documentation generation tool.  Create a
    CMakeLists.txt file there capable of building either as a subdirectory
    of the main CMake build, or as a standalone documentation build.
    
    Add cache options SPHINX_MAN and SPHINX_HTML to select output formats
    and SPHINX_EXECUTABLE to specify the sphinx-build executable.  Add
    bootstrap options --sphix-man and --sphinx-html to select output formats
    and --sphinx-build=<sb> to specify the sphinx-build executable.
    
    Create a "conf.py.in" file to configure_file into "conf.py" to tell
    sphinx-build how to build our documents.  Create a "cmake.py" Sphinx
    extension module defining:
    
    * The "cmake-module" directive used in Help/module/*.rst files to
      scan .rst markup from the corresponding Modules/*.cmake file.
    
    * A Sphinx domain called "cmake" defining documentation object types
      for CMake Help/<type> directories: command, generator, manual,
      module, policy, prop_*, and variable.  Add a "role" for each type
      to perform cross-references.  Teach the roles to treat "<XYZ>"
      as placeholders instead of explicit targets if not preceded by
      a space.  Add cmake domain directives to define command and
      variable objects explicitly in .rst file content.  This will
      allow modules to define their own commands and variables and
      have them indexed and linkable.
    
    * A Sphinx document transform that converts Help/<type>/*.rst documents
      into cmake domain objects of the corresponding <type> and adds index
      entries for them.  This will automatically index all CMake documentation
      objects and provide cross-reference targets for them with no special
      markup in the .rst files.
    bfe07aa9