Testing C++ applications

At work I recently had to look for a Unit Test Framework that’s usable on Windows. We had used the great CppUnit library to drive our unit tests for our Embedded Linux applications before and hence I decided I’d look into that first. Maybe I should explain first, that the original CppUnit project was recently forked by the Document Foundation (that’s the girls / guys driving LibreOffice) as the original project seems to be dead for some time now. Even some major Linux Distributions already switched to this fork, one of them being Debian – which is shipping 1.13.1 in Jessie. Driven by the Open Source thought many of our Windows (Embedded) applications are being compiled using the MinGW Toolchain (essentially that’s the GNU Compiler Collection (GCC) accompanied by some GNU Tools). And that’s exactly where the pain began.

CppUnit mainly ships for usage with two build systems – one for Microsoft Visual Studio based solutions and an Autotools based build system  (there are some others, like for the Borland C++ Compiler, but I didn’t get to try them). Try to make either of them work with MinGW. Yeah right. Apart from that the build systems are cluttered all over the place and some of them are horrendously outdated.

So I decided to take a look into what could be done to improve the situation. A few months back we decided to switch to CMake based build systems at work (CMake is awesome, btw) and so I started porting CppUnit to make use of this build system. Unfortunately I realized very soon that it would be hard work getting  all components to work again, as some of them did not get the love they deserved (I’m especially pointing at the Qt based test runner, which was still using the quite outdated Qt3 libraries). Getting the library itself to build was quite easy.

That said, in the meantime my changes made it into the official Git repository hosted at freedesktop.org and at the current state all components except the MFC based stuff are building just fine on all platforms supported by CMake and meeting the minimum compiler requirements – which should be all recent compilers starting with the MSVC 2005 compiler and GCC 4.x. So “recent” is quite relative in this sense. I’ve also almost completely rewritten the Qt Test Runner library and it now makes use of either Qt4 or Qt5. So, all of these changes can be found in the feature/cmake branch of the official CppUnit Git repository. If you’re interested, just clone it and build the good stuff. 🙂

Welcome

Welcome back to my updated private website. After years of spending almost no time to these pages, I now finally found some time to get them to a new level.

The first thing you may notice is the WordPress link on these pages – and people already using WordPress may notice that I’m still using the default Twenty Fourteen theme. So, yes, I’ve ported my website to WordPress and stopped telling myself that I will ever create my own Content Management System or Blog Engine. The reasons for this change seems quite obvious: it’s now way easier to add new posts and site management is much more flexible than it could ever have been with the old layout. Apart from that I recently set up another WordPress blog for my sister’s handicraft stuff and was quite impressed with the provided functionality and ease of configuration.

That said, I hope that I will finally be able to post more stuff on this website now. I may still tweak the layout and colors of the Twenty Fourteen theme as time passes by, but this will be done step by step as I find the time to do so.

So, what can you expect in the future? Well, I plan to post personal stuff, of course. But apart from that I also feel ready to post useful tips and tricks related to my passion (and coincidentally the things I do at my work): Software Engineering and Development. Currently I largely work on Embedded Linux platforms using C++ and the Qt libraries, so you may see posts regarding these topics in the near future. Currently this (Blog) site is still rather empty, but I think you’ll have fun with some content that’s already present (especially if you’re interested in gaming you may head over to the Downloads section ASAP 😉 ).