Blame doc/index.doc

Packit 1c1d7e
/******************************************************************************
Packit 1c1d7e
 *
Packit 1c1d7e
 * 
Packit 1c1d7e
 *
Packit 1c1d7e
 * Copyright (C) 1997-2015 by Dimitri van Heesch.
Packit 1c1d7e
 *
Packit 1c1d7e
 * Permission to use, copy, modify, and distribute this software and its
Packit 1c1d7e
 * documentation under the terms of the GNU General Public License is hereby 
Packit 1c1d7e
 * granted. No representations are made about the suitability of this software 
Packit 1c1d7e
 * for any purpose. It is provided "as is" without express or implied warranty.
Packit 1c1d7e
 * See the GNU General Public License for more details.
Packit 1c1d7e
 *
Packit 1c1d7e
 * Documents produced by Doxygen are derivative works derived from the
Packit 1c1d7e
 * input used in their production; they are not affected by this license.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
/*! 
Packit 1c1d7e
\mainpage 
Packit 1c1d7e
Packit 1c1d7e
\if logo_on
Packit 1c1d7e
<center>
Packit 1c1d7e
\htmlonly
Packit 1c1d7e
doxygen
Packit 1c1d7e
Version: $(VERSION)
Packit 1c1d7e
\endhtmlonly
Packit 1c1d7e
</center>
Packit 1c1d7e
\endif
Packit 1c1d7e
Packit 1c1d7e

Introduction

Packit 1c1d7e
Doxygen is the de facto standard tool for generating documentation from
Packit 1c1d7e
annotated C++ sources, but it also supports other popular programming 
Packit 1c1d7e
languages such as C, Objective-C, C#, PHP, Java, Python, IDL 
Packit 1c1d7e
(Corba, Microsoft, and UNO/OpenOffice flavors), Fortran, VHDL, Tcl, and to some extent D.
Packit 1c1d7e
Packit 1c1d7e
Doxygen can help you in three ways:
Packit 1c1d7e
    Packit 1c1d7e
  1. It can generate an on-line documentation browser (in HTML) and/or an
  2. Packit 1c1d7e
         off-line reference manual (in \LaTeX) from a set 
    Packit 1c1d7e
         of documented source files. 
    Packit 1c1d7e
         There is also support for generating output in RTF (MS-Word), 
    Packit 1c1d7e
         PostScript, hyperlinked PDF, compressed HTML, and Unix man pages.
    Packit 1c1d7e
         The documentation is extracted directly from the sources, which
    Packit 1c1d7e
         makes it much easier to keep the documentation consistent with the
    Packit 1c1d7e
         source code.
    Packit 1c1d7e
  3. You can \ref extract_all "configure" doxygen to extract the code structure
  4. Packit 1c1d7e
         from undocumented source files. This is very useful to quickly 
    Packit 1c1d7e
         find your way in large source distributions. 
    Packit 1c1d7e
         Doxygen can also visualize the relations between the various elements 
    Packit 1c1d7e
         by means of include dependency graphs, inheritance diagrams,
    Packit 1c1d7e
         and collaboration diagrams, which are all generated automatically.
    Packit 1c1d7e
  5. You can also use doxygen for creating normal documentation (as I did
  6. Packit 1c1d7e
         for the doxygen user manual and web-site).
    Packit 1c1d7e
    Packit 1c1d7e
    Packit 1c1d7e
    Doxygen is developed under Mac OS X and Linux, but is set-up to be highly 
    Packit 1c1d7e
    portable. As a result, it runs on most other Unix flavors as well. 
    Packit 1c1d7e
    Furthermore, executables for Windows are available.
    Packit 1c1d7e
    Packit 1c1d7e
    \n
    Packit 1c1d7e
    This manual is divided into three parts, each of which is divided into several sections.
    Packit 1c1d7e
    Packit 1c1d7e
    The first part forms a user manual:
    Packit 1c1d7e
      Packit 1c1d7e
    • Section \ref install discusses how to
    • Packit 1c1d7e
            download, compile and install
      Packit 1c1d7e
                           doxygen for your platform.
      Packit 1c1d7e
    • Section \ref starting tells you how to generate your first piece of
    • Packit 1c1d7e
                           documentation quickly. 
      Packit 1c1d7e
    • Section \ref docblocks demonstrates the various ways that code can
    • Packit 1c1d7e
                       be documented.
      Packit 1c1d7e
    • Section \ref markdown show the Markdown formatting supported by doxygen.
    • Packit 1c1d7e
    • Section \ref lists shows how to create lists.
    • Packit 1c1d7e
    • Section \ref grouping shows how to group things together.
    • Packit 1c1d7e
    • Section \ref formulas shows how to insert formulas in the documentation.
    • Packit 1c1d7e
    • Section \ref diagrams describes the diagrams and graphs that doxygen can generate.
    • Packit 1c1d7e
    • Section \ref preprocessing explains how doxygen deals with macro definitions.
    • Packit 1c1d7e
    • Section \ref autolink shows how to put links to files, classes,
    • Packit 1c1d7e
                       and members in the documentation.
      Packit 1c1d7e
    • Section \ref output shows how to generate the various output formats
    • Packit 1c1d7e
                       supported by doxygen.
      Packit 1c1d7e
    • Section \ref searching shows various ways to search in the HTML documentation.
    • Packit 1c1d7e
    • Section \ref extsearch shows how use the external search and index tools
    • Packit 1c1d7e
    • Section \ref customize explains how you can customize the output generated
    • Packit 1c1d7e
                       by doxygen.
      Packit 1c1d7e
    • Section \ref custcmd show how to define and use custom commands in your comments.
    • Packit 1c1d7e
    • Section \ref external explains how to let doxygen create links to externally generated documentation.
    • Packit 1c1d7e
    • Section \ref faq gives answers to frequently asked questions.
    • Packit 1c1d7e
    • Section \ref trouble tells you what to do when you have problems.
    • Packit 1c1d7e
      Packit 1c1d7e
      Packit 1c1d7e
      The second part forms a reference manual:
      Packit 1c1d7e
      Packit 1c1d7e
        Packit 1c1d7e
      • Section \ref features presents an overview of what doxygen can do.
      • Packit 1c1d7e
      • Section \ref doxygen_usage shows how to use the \c doxygen program.
      • Packit 1c1d7e
      • Section \ref doxywizard_usage shows how to use the \c doxywizard program.
      • Packit 1c1d7e
      • Section \ref config shows how to fine-tune doxygen, so it
      • Packit 1c1d7e
                      generates the documentation you want.
        Packit 1c1d7e
      • Section \ref commands shows an overview of the special commands that can be
      • Packit 1c1d7e
                      used within the documentation.
        Packit 1c1d7e
      • Section \ref htmlcmds shows an overview of the HTML commands that
      • Packit 1c1d7e
                      can be used within the documentation.
        Packit 1c1d7e
      • Section \ref xmlcmds shows an overview of the C# style XML commands that
      • Packit 1c1d7e
                      can be used within the documentation.
        Packit 1c1d7e
        Packit 1c1d7e
        Packit 1c1d7e
        The third part provides information for developers:
        Packit 1c1d7e
        Packit 1c1d7e
          Packit 1c1d7e
        • Section \ref arch gives a global overview of how doxygen is internally
        • Packit 1c1d7e
              structured.
          Packit 1c1d7e
        • Section \ref perlmod shows how to use the PerlMod output.
        • Packit 1c1d7e
        • Section \ref langhowto explains how to add support for new
        • Packit 1c1d7e
                        output languages.
          Packit 1c1d7e
          Packit 1c1d7e
          Packit 1c1d7e
          \n

          Doxygen license

          Packit 1c1d7e
          \addindex license
          Packit 1c1d7e
          \addindex GPL
          Packit 1c1d7e
          Packit 1c1d7e
          Copyright © 1997-2016 by 
          Packit 1c1d7e
          Dimitri van Heesch.

          Packit 1c1d7e
          Packit 1c1d7e
          Permission to use, copy, modify, and distribute this software and its
          Packit 1c1d7e
          documentation under the terms of the GNU General Public License is hereby 
          Packit 1c1d7e
          granted. No representations are made about the suitability of this software 
          Packit 1c1d7e
          for any purpose. It is provided "as is" without express or implied warranty.
          Packit 1c1d7e
          See the 
          Packit 1c1d7e
          Packit 1c1d7e
          GNU General Public License
          Packit 1c1d7e
          for more details.
          Packit 1c1d7e

          Packit 1c1d7e
          Documents produced by doxygen are derivative works derived from the
          Packit 1c1d7e
          input used in their production; they are not affected by this license.
          Packit 1c1d7e
          Packit 1c1d7e

          User examples

          Packit 1c1d7e
          Packit 1c1d7e
          Doxygen supports a number of \ref output "output formats" where HTML is the
          Packit 1c1d7e
          most popular one. I've gathered 
          Packit 1c1d7e
          some nice examples 
          Packit 1c1d7e
          of real-life projects using doxygen.
          Packit 1c1d7e
          Packit 1c1d7e
          These are part of a larger
          Packit 1c1d7e
          list of projects 
          Packit 1c1d7e
          that use doxygen.
          Packit 1c1d7e
          If you know other projects, let me 
          Packit 1c1d7e
          know and I'll add them. 
          Packit 1c1d7e
          Packit 1c1d7e

          Future work

          Packit 1c1d7e
          Although doxygen is successfully used by large number of companies and 
          Packit 1c1d7e
          open source projects already, there is always room for improvement. 
          Packit 1c1d7e

          Packit 1c1d7e
          You can submit enhancement requests in
          Packit 1c1d7e
          the bug tracker.
          Packit 1c1d7e
          Make sure the severity of the bug report is set to "enhancement".
          Packit 1c1d7e
          Packit 1c1d7e

          Acknowledgments

          Packit 1c1d7e
          \addindex acknowledgments
          Packit 1c1d7e
          Thanks go to:
          Packit 1c1d7e
            Packit 1c1d7e
          • \addindex Doc++
          • Packit 1c1d7e
                Malte Zöckler and Roland Wunderling, authors of DOC++.
            Packit 1c1d7e
                The first version of doxygen borrowed some code of an old version of DOC++. 
            Packit 1c1d7e
                Although I have rewritten practically all code since then, DOC++ has still 
            Packit 1c1d7e
                given me a good start in writing doxygen.
            Packit 1c1d7e
          • All people at Qt Software, for creating a beautiful GUI Toolkit
          • Packit 1c1d7e
                (which is very useful as a Windows/Unix platform abstraction layer :-)
            Packit 1c1d7e
          • My brother Frank
          • Packit 1c1d7e
                for rendering the logos.
            Packit 1c1d7e
          • Harm van der Heijden for adding HTML help support.
          • Packit 1c1d7e
          • Wouter Slegers of
          • Packit 1c1d7e
                Your Creative Solutions 
            Packit 1c1d7e
                for registering the www.doxygen.org domain.
            Packit 1c1d7e
          • Parker Waechter for adding the RTF output generator.
          • Packit 1c1d7e
          • Joerg Baumann, for adding conditional documentation blocks,
          • Packit 1c1d7e
                PDF links, and the configuration generator.
            Packit 1c1d7e
          • Tim Mensch for adding the todo command.
          • Packit 1c1d7e
          • Christian Hammond for redesigning the web-site.
          • Packit 1c1d7e
          • Ken Wong for providing the HTML tree view code.
          • Packit 1c1d7e
          • Talin for adding support for C# style comments with XML markup.
          • Packit 1c1d7e
          • Petr Prikryl for coordinating the internationalization support.
          • Packit 1c1d7e
                All language maintainers for providing translations into many languages.
            Packit 1c1d7e
          • The band Porcupine Tree for
          • Packit 1c1d7e
                providing hours of great music to listen to while coding.
            Packit 1c1d7e
          • many, many others for suggestions, patches and bug reports.
          • Packit 1c1d7e
            Packit 1c1d7e
            Packit 1c1d7e
            \htmlonly
            Packit 1c1d7e
            Go to the next section.
            Packit 1c1d7e
            \endhtmlonly
            Packit 1c1d7e
            Packit 1c1d7e
            */
            Packit 1c1d7e