|
Packit Service |
50c9f2 |
/******************************************************************************
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
* Copyright (C) 1997-2015 by Dimitri van Heesch.
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
* Permission to use, copy, modify, and distribute this software and its
|
|
Packit Service |
50c9f2 |
* documentation under the terms of the GNU General Public License is hereby
|
|
Packit Service |
50c9f2 |
* granted. No representations are made about the suitability of this software
|
|
Packit Service |
50c9f2 |
* for any purpose. It is provided "as is" without express or implied warranty.
|
|
Packit Service |
50c9f2 |
* See the GNU General Public License for more details.
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
* Documents produced by Doxygen are derivative works derived from the
|
|
Packit Service |
50c9f2 |
* input used in their production; they are not affected by this license.
|
|
Packit Service |
50c9f2 |
*
|
|
Packit Service |
50c9f2 |
*/
|
|
Packit Service |
50c9f2 |
/*! \page external Linking to external documentation
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
If your project depends on external libraries or tools, there are several
|
|
Packit Service |
50c9f2 |
reasons to not include all sources for these with every run of doxygen:
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
Disk space: Some documentation may be available outside of the output
|
|
Packit Service |
50c9f2 |
directory of doxygen already, for instance somewhere on the web.
|
|
Packit Service |
50c9f2 |
You may want to link to these pages instead of generating the documentation
|
|
Packit Service |
50c9f2 |
in your local output directory.
|
|
Packit Service |
50c9f2 |
Compilation speed: External projects typically have a different update
|
|
Packit Service |
50c9f2 |
frequency from your own project. It does not make much sense to let doxygen
|
|
Packit Service |
50c9f2 |
parse the sources for these external project over and over again, even if
|
|
Packit Service |
50c9f2 |
nothing has changed.
|
|
Packit Service |
50c9f2 |
Memory: For very large source trees, letting doxygen parse all sources
|
|
Packit Service |
50c9f2 |
may simply take too much of your system's memory. By dividing the sources
|
|
Packit Service |
50c9f2 |
into several "packages", the sources of one package can be parsed by
|
|
Packit Service |
50c9f2 |
doxygen, while all other packages that this package depends on, are
|
|
Packit Service |
50c9f2 |
linked in externally. This saves a lot of memory.
|
|
Packit Service |
50c9f2 |
Availability: For some projects that are documented with doxygen,
|
|
Packit Service |
50c9f2 |
the sources may just not be available.
|
|
Packit Service |
50c9f2 |
Copyright issues:If the external
|
|
Packit Service |
50c9f2 |
package and its documentation are copyright someone else, it may be
|
|
Packit Service |
50c9f2 |
better - or even necessary - to reference it rather than include a
|
|
Packit Service |
50c9f2 |
copy of it with your project's documentation. When the author forbids
|
|
Packit Service |
50c9f2 |
redistribution, this is necessary. If the author requires compliance
|
|
Packit Service |
50c9f2 |
with some license condition as a precondition of redistribution, and
|
|
Packit Service |
50c9f2 |
you do not want to be bound by those conditions, referring to their
|
|
Packit Service |
50c9f2 |
copy of their documentation is preferable to including a copy.
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
If any of the above apply, you can use doxygen's tag file mechanism.
|
|
Packit Service |
50c9f2 |
A tag file is basically a compact representation of the entities found in the
|
|
Packit Service |
50c9f2 |
external sources. Doxygen can both generate and read tag files.
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
To generate a tag file for your project, simply put the name of the
|
|
Packit Service |
50c9f2 |
tag file after the \ref cfg_generate_tagfile "GENERATE_TAGFILE" option in
|
|
Packit Service |
50c9f2 |
the configuration file.
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
To combine the output of one or more external projects with your own project
|
|
Packit Service |
50c9f2 |
you should specify the name of the tag files after
|
|
Packit Service |
50c9f2 |
the \ref cfg_tagfiles "TAGFILES" option in the configuration file.
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
A tag file typically only contains a relative location of the documentation from the
|
|
Packit Service |
50c9f2 |
point where doxygen was run. So when you include a tag file in other project
|
|
Packit Service |
50c9f2 |
you have to specify where the external documentation is located in relation this project.
|
|
Packit Service |
50c9f2 |
You can do this in the configuration file by assigning the (relative) location to the
|
|
Packit Service |
50c9f2 |
tag files specified after the \ref cfg_tagfiles "TAGFILES" configuration
|
|
Packit Service |
50c9f2 |
option. If you use a relative path it should be relative with respect to
|
|
Packit Service |
50c9f2 |
the directory where the HTML output of your project is generated; so a relative path
|
|
Packit Service |
50c9f2 |
from the HTML output directory of a project to the HTML output of the other project that
|
|
Packit Service |
50c9f2 |
is linked to.
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
\par Example:
|
|
Packit Service |
50c9f2 |
Suppose you have a project \c proj that uses two external
|
|
Packit Service |
50c9f2 |
projects called \c ext1 and \c ext2.
|
|
Packit Service |
50c9f2 |
The directory structure looks as follows:
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
\par
|
|
Packit Service |
50c9f2 |
\verbatim
|
|
Packit Service |
50c9f2 |
<root>
|
|
Packit Service |
50c9f2 |
+- proj
|
|
Packit Service |
50c9f2 |
| +- html HTML output directory for proj
|
|
Packit Service |
50c9f2 |
| +- src sources for proj
|
|
Packit Service |
50c9f2 |
| |- proj.cpp
|
|
Packit Service |
50c9f2 |
+- ext1
|
|
Packit Service |
50c9f2 |
| +- html HTML output directory for ext1
|
|
Packit Service |
50c9f2 |
| |- ext1.tag tag file for ext1
|
|
Packit Service |
50c9f2 |
+- ext2
|
|
Packit Service |
50c9f2 |
| +- html HTML output directory for ext2
|
|
Packit Service |
50c9f2 |
| |- ext2.tag tag file for ext2
|
|
Packit Service |
50c9f2 |
|- proj.cfg doxygen configuration file for proj
|
|
Packit Service |
50c9f2 |
|- ext1.cfg doxygen configuration file for ext1
|
|
Packit Service |
50c9f2 |
|- ext2.cfg doxygen configuration file for ext2
|
|
Packit Service |
50c9f2 |
\endverbatim
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
\par
|
|
Packit Service |
50c9f2 |
Then the relevant parts of the configuration files look as follows:
|
|
Packit Service |
50c9f2 |
\par
|
|
Packit Service |
50c9f2 |
proj.cfg:
|
|
Packit Service |
50c9f2 |
\verbatim
|
|
Packit Service |
50c9f2 |
OUTPUT_DIRECTORY = proj
|
|
Packit Service |
50c9f2 |
INPUT = proj/src
|
|
Packit Service |
50c9f2 |
TAGFILES = ext1/ext1.tag=../../ext1/html \
|
|
Packit Service |
50c9f2 |
ext2/ext2.tag=../../ext2/html
|
|
Packit Service |
50c9f2 |
\endverbatim
|
|
Packit Service |
50c9f2 |
ext1.cfg:
|
|
Packit Service |
50c9f2 |
\verbatim
|
|
Packit Service |
50c9f2 |
OUTPUT_DIRECTORY = ext1
|
|
Packit Service |
50c9f2 |
GENERATE_TAGFILE = ext1/ext1.tag
|
|
Packit Service |
50c9f2 |
\endverbatim
|
|
Packit Service |
50c9f2 |
ext2.cfg:
|
|
Packit Service |
50c9f2 |
\verbatim
|
|
Packit Service |
50c9f2 |
OUTPUT_DIRECTORY = ext2
|
|
Packit Service |
50c9f2 |
GENERATE_TAGFILE = ext2/ext2.tag
|
|
Packit Service |
50c9f2 |
\endverbatim
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
\htmlonly
|
|
Packit Service |
50c9f2 |
Go to the next section or return to the
|
|
Packit Service |
50c9f2 |
index.
|
|
Packit Service |
50c9f2 |
\endhtmlonly
|
|
Packit Service |
50c9f2 |
|
|
Packit Service |
50c9f2 |
*/
|