Custom Buildsystem Plugin released!

December 4, 2010 at 9:38 am | Posted in KDevelop | 11 Comments

Its been quite a while since I blogged, but this is really worth it.

I was talked into doing a first release of a KDevelop 4 plugin I’ve worked for some time now (thanks Milian 😉 ). There’s been already a blog entry about it before that highlighted the features the plugin has and what its intended use is. Just a quick recap: It allows to setup executables to be run for build/configure/install/… and configure include paths and defines per build directory so that projects using something other than make/cmake/qmake can be nicely worked on with KDevelop.

Additionally it now properly supports multiple build-directories and switching between them by making sure that the language support is re-parsing the project to update the data based on the new includes. I’m using
that now quite a bit to switch between my Qt3 and Qt4 build dirsectories.

Reporting bugs has also been improved by re-using KDE infrastructure instead of mailing me directly which I almost always forget about… So in case you do find a bug or have a feature suggestions, simply file a bug against kdevelop (if possible directly choose the “custom-buildsystem” component in bugzilla) and I’ll try to take care of it.

The source code is currently still hosted on but will move to soon. I just wanted to have a release out in the wild to demonstrate my willingness to maintain this plugin and hence be able to move to the stable-plugins subproject within KDevelop (yeah they setup rules for that 😉 ).

You can find the source code on any of the KDE mirrors and here are the hashsums to verify you’ve got the proper package:

MD5Sum: 2d373002ddac5f5c23f67620bcbcc63d kdevelop-custom-buildsystem-1.0.0.tar.bz2
SHA1Sum: 25e08a67f653eae5210ad360c7cb559b2178e0cd kdevelop-custom-buildsystem-1.0.0.tar.bz2


  1. Shouldn’t this part of the custom makefile project?

    • No, as the name says Custom Makefile support is for Makefile based buildsystems. This plugin can also handle completely different stuff, like scons, bjam, ant, maven, anything that has a commandline tool to invoke for “building” etc. I’m using it for a buildsystem which is JS-based, i.e. a “build” tool is running a JS interpreter which loads the buildfiles and runs them which will then build the project.

      • As side question, shouldn’t “standard” build systems (like those you mentioned) be handled by ad-hoc project managers & builders, when possible, in the long time?

        • I’m not sure which buildsystems are considered “standard” or what you mean with “ad-hoc”, but sure ideally KDevelop would have a dedicated plugin for each buildsystem so that it can automatically find out include directories, defines etc. But implementing that takes a lot of time and effort, much more to write a generic solution like this where some of the necessary work is loaded off towards the KDevelop user(s).

      • Yes. But the Custom Makefile seems to only be a special case of your custom build system. I see no advantages of the Custome Makefile support. It even annoys by populating the project tree with the make targets and variables.

        Currently I use the Custome Makefile for our own build system. I just replace the executable by a script that copies code to a build server and starts building it. The output is filtered such that kdevelop finds the files if there are errors or warnings.

        • Well, yes of course. The same is true for CMake or QMake plugins. The point is that those plugins ideally automatically figure out things such as includes and defines and they supply nice configure-options for how to run the build tool.

          Unfortunately custom makefiles are not as advanced as they could be, they should just as well be able to extract most include dirs and defines automatically by parsing the Makefile.

  2. This is great news!

    I have a project using autotools, and if I understand it correctly, this plugin will allow me to have different profiles for each build (just like Build Configurations in KDevelop 3), which is crucial for that project.

    It doesn’t seem to build against KDevelop master though, right?

    • Thats correct, the API changed in kdevelop master (and the plugin version). So you’ll have to checkout the plugins master branch to use against KDevelop master. Currently still at

      • Thanks a lot, just tried it, looks nice!

        A couple of points though:

        1. When I open the configuration dialog, the Build Configuration always shows the first entry. I guess it should show the currently active one instead (otherwise I don’t see a way to find out which one is active now).

        2. Would be nice to have the current Build Configuration switch somewhere in the menu or a toolbar. Opening the dialog each time is a bit of a pain.

        3. The “Executable” field should be able to handle stuff like “../configure”, relative to project build directory. Specifying absolute paths to project configure scripts is a bit impractical.

        4. There’s a small typo in the Project Items list tooltip: “A list pf project items …”. I also didn’t really understand what a project item was until I saw your screenshot with “/” in there. Maybe the message could be somewhat clearer.

        Please tell me if I should file bug reports for all these.


        • Yes please report bugs for all of them, the 2. should be filed under kdevelop in general as this will need a cross-buildsystem solution (I tried about a year ago, but failed to do it).

  3. this is the feature I was missing the most since kdevelop4 right now! I did some trick to get bjam working anyway, but certainly this plugin will enhance the user usability.


Sorry, the comment form is closed at this time.

Blog at
Entries and comments feeds.

%d bloggers like this: