Guidelines and HOWTOs/Build from source/edk: Difference between revisions

From KDE Community Wiki
(config.ini is now optional)
(Archived)
Tag: Replaced
 
(2 intermediate revisions by one other user not shown)
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).
 
=== 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.
 
If you want to pass arguments to the project:
 
  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).

Latest revision as of 00:16, 28 September 2022

Note

This page is archived. See page history.