|
|
Line 1: |
Line 1: |
| <tt>edk</tt> is a Python script that can be used to easily build KDE projects. Once <tt>edk</tt> is properly installed and configured, building any KDE project is as easy as invoking <code>edk</code> from the git root of the project.
| | {{Note|This page is archived. See page history.}} |
| | |
| == Motivations ==
| |
| | |
| You may be interested in <tt>edk</tt> if:
| |
| | |
| * You are a new contributor looking for a simple development environment
| |
| * You are a new contributor and you want to build just one application
| |
| * You want to build KDE projects on top of an existing Plasma environment
| |
| * You want to build KDE projects on top of a third party environment (e.g. Gnome or Unity)
| |
| * You are tired to manually call <code>cmake</code>, <code>make</code>, <code>make test</code>, ...
| |
| | |
| == How does it work? ==
| |
| <tt>edk</tt> is designed to just build, install and (optionally) "run" your project (as <tt>edk</tt> is primarily designed for applications with a single executable). You don't need to worry about setting up a development environment (besides installing <tt>edk</tt> itself).
| |
| | |
| <tt>edk</tt> is not a replacement of [https://community.kde.org/Guidelines_and_HOWTOs/Build_from_source kdesrc-build]. It doesn't download source code and it doesn't resolve dependencies (in fact, <tt>edk</tt> assumes that all build-dependencies are already satisfied). If you want to build the whole KDE stack, <tt>kdesrc-build</tt> [https://blogs.kde.org/2016/05/16/compiling-all-qt5-kf5-plasma5-kdepim5-apps is still the way to go].
| |
| | |
| == Installation ==
| |
| | |
| <syntaxhighlight lang="bash">
| |
| git clone git://anongit.kde.org/scratch/elvisangelaccio/edk.git
| |
| # assuming that $HOME/bin is in your $PATH
| |
| ln -s $PWD/edk/edk.py $HOME/bin/edk
| |
| # optional, if you want to customize your build settings or environment variables
| |
| mkdir ~/.config/edk
| |
| cp edk/config.ini.example ~/.config/edk/config.ini
| |
| cp edk/env.sh.example ~/config/edk/env.sh
| |
| </syntaxhighlight>
| |
| | |
| {{Note| You can replace <code>~/.config</code> with <code>$XDG_CONFIG_HOME</code>, if you have this variable set }} | |
| | |
| == Usage ==
| |
| === Build a project ===
| |
| From the git root of the project:
| |
| | |
| edk
| |
| | |
| This is a shorthand for <code>edk b</code> with no additional arguments. | |
| The script will perform the following operations:
| |
| | |
| * If <code>$XDG_CONFIG_HOME/edk/env.sh</code> exists, it will source whatever environment variables are exported in there.
| |
| * Build the CMake-based project found in <code>$(pwd)</code>. Build files are written to a subdirectory of <code>$XDG_CACHE_HOME/edk</code>.
| |
| * Install the project in <code>$EDK</code>. This variable defaults to <code>$XDG_DATA_HOME/edk</code>, but you can override it in <code>env.sh</code>.
| |
| * Run the project tests (if available). If <tt>xvfb-run</tt> is installed, tests will be run in a virtual X server.
| |
| | |
| === Configure the project ===
| |
| | |
| <tt>edk</tt> will respect the options defined in the <code>[project]</code> section of the config file.
| |
| The value of the <code>project</code> key is defined in the following order:
| |
| | |
| # The value of the <code>-p</code> switch, for example <code>edk -p foo</code>
| |
| # The value of the <code>project</code> key in the <code>[global]</code> section of the config file
| |
| # The name of the directory <tt>edk</tt> was run from.
| |
| | |
| The value of this key is also used as the name of the build directory in <code>$XDG_CACHE_HOME/edk</code>.
| |
| | |
| === Run the project ===
| |
| | |
| Once the project is built, you can run it with:
| |
| | |
| edk r
| |
| | |
| This will execute whatever is defined in the <code>project</code> key, unless you define an <code>executable</code> key in the <code>[project]</code> section. You can override both with the <code>-e</code> switch:
| |
| | |
| edk r -e autotests/footest
| |
| | |
| will run the <tt>autotests/footest</tt> executable located in your build directory.
| |
| | |
| If you want to pass arguments to the executable:
| |
| | |
| edk r --foo --bar=XXX
| |
| | |
| === Debug the project ===
| |
| | |
| Similarly to the <code>r</code> subcommand, it's also possible to run the project with a debugger (only gdb for now):
| |
| | |
| edk d
| |
| | |
| This will execute <code>gdb <executable></code>.
| |
| | |
| === Clean build ===
| |
| | |
| edk b -c
| |
| | |
| This will delete the build directory before performing a new build.
| |
| | |
| == Configuration ==
| |
| | |
| === Build with Ninja ===
| |
| | |
| Add <code>-GNinja</code> in the <code>cmake-options</code> of your <tt>config.ini</tt> file (either in the <code>[global]</code> section on in a project-specific section).
| |