parameters: (stripPath)
docstring: Generates the doxygen xml files used by breathe and exhale.
      Approach modified from:
  
      - https://github.com/fmtlib/fmt/blob/master/doc/build.py
  
      :param stripPath:
          The value you are sending to exhale.generate via the
          key 'doxygenStripFromPath'.  Usually, should be '..'.
docstring_summary: Generates the doxygen xml files used by breathe and exhale.
      Approach modified from:
docstring_tokens: Generates the doxygen xml files used by breathe and exhale . Approach modified from :
function: def generateDoxygenXML(stripPath):
      '''
      Generates the doxygen xml files used by breathe and exhale.
      Approach modified from:
  
      - https://github.com/fmtlib/fmt/blob/master/doc/build.py
  
      :param stripPath:
          The value you are sending to exhale.generate via the
          key 'doxygenStripFromPath'.  Usually, should be '..'.
      '''
      from subprocess import PIPE, Popen
      try:
          doxygen_cmd = ["doxygen", "-"]# "-" tells Doxygen to read configs from stdin
          doxygen_proc  = Popen(doxygen_cmd, stdin=PIPE)
          doxygen_input = r'''
              # Make this the same as what you tell exhale.
              OUTPUT_DIRECTORY       = doxyoutput
              # If you need this to be YES, exhale will probably break.
              CREATE_SUBDIRS         = NO
              # So that only include/ and subdirectories appear.
              FULL_PATH_NAMES        = YES
              STRIP_FROM_PATH        = "%s/"
              # Tell Doxygen where the source code is (yours may be different).
              INPUT                  = ../include
              # Nested folders will be ignored without this.  You may not need it.
              RECURSIVE              = YES
              # Set to YES if you are debugging or want to compare.
              GENERATE_HTML          = NO
              # Unless you want it?
              GENERATE_LATEX         = NO
              # Both breathe and exhale need the xml.
              GENERATE_XML           = YES
              # Set to NO if you do not want the Doxygen program listing included.
              XML_PROGRAMLISTING     = YES
              # Allow for rst directives and advanced functions (e.g. grid tables)
              ALIASES                = "rst=\verbatim embed:rst:leading-asterisk"
              ALIASES               += "endrst=\endverbatim"
              # We definitely need the preprocessor for this project.
              ENABLE_PREPROCESSING   = YES
              MACRO_EXPANSION        = YES
              EXPAND_ONLY_PREDEF     = NO
              SKIP_FUNCTION_MACROS   = NO
              PREDEFINED             = NAMESPACE_BEGIN(nanogui)="namespace nanogui {"
              PREDEFINED            += NAMESPACE_END(nanogui)="}"
              PREDEFINED            += NAMESPACE_BEGIN(detail)="namespace detail {"
              PREDEFINED            += NAMESPACE_END(detail)="}"
              PREDEFINED            += DOXYGEN_SHOULD_SKIP_THIS
              PREDEFINED            += DOXYGEN_DOCUMENTATION_BUILD
              PREDEFINED            += NANOGUI_EXPORT
          ''' % stripPath
          # In python 3 strings and bytes are no longer interchangeable
          if sys.version[0] == "3":
              doxygen_input = bytes(doxygen_input, 'ASCII')
          doxygen_proc.communicate(input=doxygen_input)
          doxygen_proc.stdin.close()
          if doxygen_proc.wait() != 0:
              raise RuntimeError("Non-zero return code from 'doxygen'...")
      except Exception as e:
          raise Exception("Unable to execute 'doxygen': {}".format(e))
function_tokens: def generateDoxygenXML ( stripPath ) : from subprocess import PIPE , Popen try : doxygen_cmd = [ "doxygen" , "-" ] # "-" tells Doxygen to read configs from stdin doxygen_proc = Popen ( doxygen_cmd , stdin = PIPE ) doxygen_input = r'''
              # Make this the same as what you tell exhale.
              OUTPUT_DIRECTORY       = doxyoutput
              # If you need this to be YES, exhale will probably break.
              CREATE_SUBDIRS         = NO
              # So that only include/ and subdirectories appear.
              FULL_PATH_NAMES        = YES
              STRIP_FROM_PATH        = "%s/"
              # Tell Doxygen where the source code is (yours may be different).
              INPUT                  = ../include
              # Nested folders will be ignored without this.  You may not need it.
              RECURSIVE              = YES
              # Set to YES if you are debugging or want to compare.
              GENERATE_HTML          = NO
              # Unless you want it?
              GENERATE_LATEX         = NO
              # Both breathe and exhale need the xml.
              GENERATE_XML           = YES
              # Set to NO if you do not want the Doxygen program listing included.
              XML_PROGRAMLISTING     = YES
              # Allow for rst directives and advanced functions (e.g. grid tables)
              ALIASES                = "rst=\verbatim embed:rst:leading-asterisk"
              ALIASES               += "endrst=\endverbatim"
              # We definitely need the preprocessor for this project.
              ENABLE_PREPROCESSING   = YES
              MACRO_EXPANSION        = YES
              EXPAND_ONLY_PREDEF     = NO
              SKIP_FUNCTION_MACROS   = NO
              PREDEFINED             = NAMESPACE_BEGIN(nanogui)="namespace nanogui {"
              PREDEFINED            += NAMESPACE_END(nanogui)="}"
              PREDEFINED            += NAMESPACE_BEGIN(detail)="namespace detail {"
              PREDEFINED            += NAMESPACE_END(detail)="}"
              PREDEFINED            += DOXYGEN_SHOULD_SKIP_THIS
              PREDEFINED            += DOXYGEN_DOCUMENTATION_BUILD
              PREDEFINED            += NANOGUI_EXPORT
          ''' % stripPath # In python 3 strings and bytes are no longer interchangeable if sys . version [ 0 ] == "3" : doxygen_input = bytes ( doxygen_input , 'ASCII' ) doxygen_proc . communicate ( input = doxygen_input ) doxygen_proc . stdin . close ( ) if doxygen_proc . wait ( ) != 0 : raise RuntimeError ( "Non-zero return code from 'doxygen'..." ) except Exception as e : raise Exception ( "Unable to execute 'doxygen': {}" . format ( e ) )