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.