Warning, /frameworks/kapidox/README.md is written in an unsupported language. File is not indexed.

0001 # KDE Doxygen Tools
0002 
0003 ## Introduction
0004 
0005 This framework contains scripts and data for building API documentation (dox) in
0006 a standard format and style.
0007 
0008 https://api.kde.org holds the result, and this very page is handled by KApiDox too: https://api.kde.org/frameworks/kapidox/html/index.html.
0009 
0010 The [Doxygen](https://www.doxygen.nl) tool performs the actual documentation extraction and
0011 formatting. This framework provides a wrapper script to make generating the
0012 documentation more convenient (including reading settings from the target
0013 framework or other module) and a standard template for the generated
0014 documentation.
0015 
0016 ## Installation
0017 Python 3 is required to run the scripts, as well as the `jinja`, `pyyaml`, `requests`, `doxypypy` and `doxyqml` python modules.
0018 
0019 The following command creates a venv and installs the tool alongside all its modules:
0020 
0021 ```
0022 bash ./bootstrap-devenv.sh
0023 ```
0024 
0025 To generate the dependency diagrams, you need the Graphviz Python bindings.
0026 They are currently not available from pip, but most distributions provide them.
0027 You can get binaries and source archives from
0028 <https://www.graphviz.org/download/>.
0029 
0030 ## (For maintainers) updating the package dependencies
0031 
0032 Run ./requirements-update.sh in this folder, review and test the updated requirements file and commit the changed file.
0033 
0034 ## Workflow
0035 
0036 This document describes two ways to use KApiDox to generate documentation for KDE software: the manual way, and the container way. Both can apply to standalone repositories or to projects built using [kdesrc-build](https://community.kde.org/Get_Involved/development), but the main role of the manual method is mostly to learn how the tool works, whereas the container method should be the cleaner, more convenient way.
0037 
0038 ### The manual way
0039 
0040 With this method, we will be using three directories (kirigami, kapidox and kirigamidocs).
0041 
0042 First, clone the desired repository as well as the KApiDox repository. In this example we will use Kirigami:
0043 
0044 ```bash
0045 git clone https://invent.kde.org/frameworks/kirigami.git
0046 git clone https://invent.kde.org/frameworks/kapidox.git
0047 ```
0048 
0049 You may use the ssh:// version instead if you have a developer account.
0050 
0051 You should now have a `kirigami` and a `kapidox` folder. Make a new folder to store the local test HTML documentation, then switch to the kapidox directory:
0052 
0053 ```bash
0054 mkdir kirigamidocs
0055 cd kapidox
0056 ```
0057 
0058 Run the script provided by the KApiDox repository. This only needs to be done once, and it will download and install the needed Python3 modules and generate a proper Python virtual environment:
0059 
0060 ```bash
0061 bash bootstrap-devenv.sh
0062 ```
0063 
0064 After the script is done, you should have a hidden folder called `.kapidox_venv/`, inside of which is a `bin/` folder containing the files we will be using.
0065 
0066 If the shell you are using is bash or zsh, you can run `source .kapidox_venv/bin/activate` to activate the Python virtual venv. If you are using csh or fish, you may use `source .kapidox_venv/bin/activate.csh` or `source .kapidox_venv/bin/activate.fish`, respectively.
0067 
0068 After activating the Python venv, your terminal prompt should change to that of a venv. Switch to the folder we created earlier and run kapidox-generate by pointing to the folder containing the target project repository (in this case, Kirigami):
0069 
0070 ```bash
0071 cd ../kirigamidocs
0072 kapidox-generate ../kirigami
0073 ```
0074 
0075 It can take a while. After it is done, for convenience, do not close this venv shell yet.
0076 
0077 You should have an `index.html` file which should be the entrypoint of the new documentation. You can open a new instance of your terminal or another tab, then open it directly from your terminal by using `xdg-open index.html` or `kioclient exec index.html`, or whichever other method you'd like.
0078 
0079 After that, you may edit the Doxygen-formatted documentation in *.qml or *.h files using Kate or your favorite editor.
0080 
0081 After you're finished editing, you can switch back to the venv in the `kirigamidocs/` folder, check that you are in the correct folder with `pwd`, and run the following to regenerate the locally edited documentation:
0082 
0083 ```bash
0084 pwd # Outputs e.g. ~/kirigamidocs
0085 rm -rf * && kapidox-generate ../kirigami
0086 ```
0087 
0088 Now that you understand how to generate the venv and how to use `kapidox-generate`, you can easily apply this knowledge to projects built using kdesrc-build. Assuming you're using bash:
0089 
0090 ```bash
0091 kdesrc-build kapidox
0092 // ...building...
0093 kdesrc-build kirigami
0094 // ...building...
0095 mkdir ~/kirigamidocs
0096 cd ~/kde/src/kapidox
0097 bash bootstrap-devenv.sh
0098 source .kapidox_venv/bin/activate
0099 cd ~/kirigamidocs
0100 kapidox-generate ~/kde/src/kirigami
0101 // ...edit files...
0102 rm -rf * && kapidox-generate ~/kde/src/kirigami
0103 ```
0104 
0105 ### The container way
0106 
0107 Although it is possible to use KApiDox directly, using it in a container can be much more convenient once it is set up.
0108 
0109 You can build a new image with docker or podman:
0110 
0111 ```bash
0112 docker build . -t kapidox_generate:latest
0113 // OR
0114 podman build . -t kapidox_generate:latest
0115 ```
0116 
0117 By running `docker images` or `podman images` you should now see an image called `localhost/kapidox_generate`.
0118 
0119 To run `kapidox-generate` with a project that you want to generate the docs from you need an empty folder for the results (`/path/to/build/folder`). The build directory inside the container is set as `BUILD_DIR` in `Dockerfile`, and must stay in sync with what is used as `CONTAINER_BUILD_DIR` in the volume mapping.
0120 
0121 For this example we use `libksane` checked out to `/path/to/libksane`:
0122 
0123 ```bash
0124 export HOST_PROJECT_SRC=/path/to/libksane/folder
0125 export HOST_BUILD_DIR=/path/to/libksane/build/folder
0126 export CONTAINER_PROJECT_SRC=/home/kapidox/libksane
0127 export CONTAINER_BUILD_DIR=/home/kapidox/apidox-build
0128 mkdir $HOST_BUILD_DIR
0129 docker run \
0130     --volume $HOST_PROJECT_SRC:$CONTAINER_PROJECT_SRC \
0131     --volume $HOST_BUILD_DIR:$CONTAINER_BUILD_DIR \
0132     kapidox_generate:latest \
0133     kapidox-generate $CONTAINER_PROJECT_SRC
0134 ```
0135 
0136 ## Writing documentation
0137 
0138 Writing dox is beyond the scope of this documentation -- see the notes at
0139 <https://community.kde.org/Frameworks/Frameworks_Documentation_Policy> and the [doxygen
0140 manual](https://doxygen.nl/manual/docblocks.html).
0141 
0142 To allow code to handle the case of being processed by kapidox a C/C++ preprocessor macro
0143 is set as defined when run: `K_DOXYGEN` (since v5.67.0).
0144 For backward-compatibility the definition `DOXYGEN_SHOULD_SKIP_THIS` is also set, but
0145 its usage is deprecated.
0146 
0147 The kapidox scripts expects certain things to be present in the directory it is
0148 run on:
0149 
0150 ### README.md
0151 Most importantly, there should be a `README.md` file that works as the main page, like one where this documentation is written in (backward compatibility also authorize `Mainpage.dox` files).  The first line of this file
0152 is particularly important, as it will be used as the title of the documentation.
0153 
0154 ### metainfo.yaml
0155 A `metainfo.yaml` file is needed for the library to be generated. It should
0156 contain some meta information about the library itself, its maintainers, where
0157 the sources are, etc.
0158 
0159 A very simple example can be:
0160 
0161 ```yaml
0162 # metainfo.yaml
0163 description: Library doing X
0164 maintainer: gwashington
0165 public_lib: true
0166 logo: libX.png
0167 ```
0168 
0169 A comprehensive list of the available keys can be found on
0170 [this page](@ref metainfo_syntax).
0171 
0172 By default, the source of the public library must be in `src`, if the
0173 documentation refers to any dot files, these should be in `docs/dot`.
0174 Images should be in `docs/pics`, and snippets of example code should be in
0175 `examples`.  See the [Doxygen documentation](https://doxygen.nl/manual/index.html) for help on how to refer to these
0176 files from the dox comments in the source files.
0177 
0178 If you need to override any Doxygen settings, put them in a `docs/Doxyfile.local` in your project.
0179 Global settings are defined in `src/kapidox/data/Doxyfile.global`.
0180 
0181 ## Generating the documentation
0182 
0183 The tool for generating dox is `src/kapidox_generate`.
0184 Change to an empty directory, then simply point it at the
0185 folder you want to generate dox for (such as a frameworks checkout).
0186 
0187 For example, if you have a checkout of KCoreAddons at
0188 ~/kde/src/frameworks/kcoreaddons, you could run
0189 
0190     ~/kde/src/frameworks/kapidox/src/kapidox_generate ~/kde/src/frameworks/kcoreaddons
0191 
0192 and it would create a documentation in the current directory, which needs to be empty before executing the command.
0193 
0194 kapidox recursively walks through folders, so you can also run it on
0195 `~/kde/src/frameworks` or `~/src`. For a lot of libraries, the generation can last
0196 15-30 minutes and use several hundreds of MB, so be prepared!
0197 
0198 Pass the --help argument to see options that control the behaviour of the
0199 script.
0200 
0201 Note that on Windows, you will need to run something like
0202 
0203     c:\python\python.exe c:\frameworks\kapidox\src\kapidox_generate c:\frameworks\kcoreaddons
0204 
0205 ## Specific to frameworks (for now)
0206 
0207 You can ask `kgenframeworksapidox` to generate dependency diagrams for all the
0208 frameworks.  To do so, you must first generate Graphviz .dot files for all
0209 frameworks with the `depdiagram-prepare` tool, like this:
0210 
0211     mkdir dot
0212     ~/kde/src/frameworks/kapidox/src/depdiagram-prepare --all ~/kde/src/frameworks dot
0213 
0214 Then call `kgenframeworksapidox` with the `--depdiagram-dot-dir` option, like
0215 this:
0216 
0217     mkdir frameworks-apidocs
0218     cd frameworks-apidocs
0219     ~/kde/src/frameworks/kapidox/src/kapidox_generate --depdiagram-dot-dir ../dot ~/kde/src/frameworks
0220 
0221 More fine-grained tools are available for dependency diagrams. You can learn
0222 about them in [depdiagrams](@ref depdiagrams).
0223 
0224 
0225 ## Examples of generated pages:
0226 
0227 - KDE API documentation: <https://api.kde.org/>
0228 
0229 ## Licensing
0230 
0231 This project is licensed under BSD-2-Clause. But the specific theme used inside KDE
0232 is licensed under AGPL-3.0-or-later. If you find the AGPL too restrictive you can
0233 alternatively use the theme from [Docsy](https://github.com/google/docsy) (APACHE-2.0).
0234 For that you need to replace the style and js script present in `src/kapidox/data/templates/base.html`.
0235 
0236 If you need support or licensing clarification, feel free to contact the maintainers.