Skip to content

Windows C++ IDEs – Part Three

June 24, 2011

In the third part of my informal survey of Windows C++ IDEs I look at two oddballs, plus an IDE that no-one should consider using.

Qt Creator

The Qt Creator IDE is cross-platform, with rather complicated licensing arrangements. It is the product of Nokia’s Development Frameworks division and is primarily aimed at easing the building of applications using their Qt framework. As my nclip application doesn’t use the framework, I was expecting to have problems with Qt Creator, and I was not disappointed.

After a hefty download, my first impressions of Qt Creator were positive. It looks very nice, some might think nicer than VC++, and certainly much more attractive than Code::Blocks or CodeLite. And it has the best help system of any of the IDEs covered here.

As usual, I started by creating an empty project (if the project already existed in a version control repository, I could have cloned it from there – Qt Creator has very good VCS integration, better than any of the other IDEs), selecting it from a dialog which seemed to stress that I probably really should be using the Qt Framework, but I pressed on.

Adding the files to the project was easy, although the project manager insisted on displaying a couple of “virtual folders” I didn’t want – the sooner that IDE designers forget this idea, the better, in my opinion. I then selected “Build”. At first I thought nothing was happening, but then I noticed a miniature progress bar was moving. Another note to IDE designers – let me see what the compiler is actually doing – I’m not scared of it! The build, as usual, came to a halt because I had not put my inc directory on the search path. and now things got interesting. There is as far as I can see no IDE feature for specifying the include path (or any other paths). After a bit of trawling through the help system, it seemed as though I needed to add:

INCLUDEPATH += inc

to the project’s .pro file. This done, the project did seem to build, with several progress bars displaying… well, I’m not sure, just “progress” I guess. However, the build came to a halt with the same Unicode problems I had with VC++. Unfortunately, unlike VC++, there is no nice easy project option you can change to use single-character text. The help seems to be silent on this issue, but after some spelunking with Google, I managed to track down a compiler configuration file in the Qt Creator installation tree. Editing this fixed the problem, but needless to say I shouldn’t have to be editing global config files to get a simple little application to compile.

Well, compile it did. However, run it did not. When I pressed the “Run” button, the IDE output informed me that the program had exited with return code of zero. However, this application always prints something on its standard output, but I could see nothing. So I decided to run it from a command prompt. I was a bit bemused to find that the object files and executable were nowhere to be found in the project tree. After much poking about, I found that Qt Creator had made a completely new and separate directory and performed the build in there – I guess that’s why it’s called “Creator”; it creates things you don’t want.

OK, I was now in a position to run the application, although somewhat losing heart. Needless to say, it didn’t run. Instead a dialog box popped up saying a DLL was missing. OK, let’s have a look with the ever-useful Dependency Walker. This showed that Qt Creator had decided to build in a number of completely unnecessary DLLs (I know they are unnecessary because I routinely build this application without them). I suppose I could have edited that global config file again, but at this point I couldn’t be bothered. I whipped out that other essential tool, Everything, located the DLLs (in the Qt install tree) and added their directory to the PATH variable.

Now when I ran the app, no popup error message. In fact, nothing. The application simply exits. Even though this is not the most complicated application in the world, the number of hoops I was having to jump through to get it to compile with Qt Creator was just too great. So I gave up. Qt Creator may be a great tool for creating Qt applications, which after all is its avowed raison d’etre, but as a general purpose C++ programming platform, it seems to me to fall far short. So to sum up, the good:

  • Looks great
  • Good help
  • Good VCS integration

and the bad:

  • Common tasks require config files to be edited
  • Strange progress indicators
  • Creates unwanted directories
  • Compiled application had unnecessary dependencies, and didn’t work

TheIDE

Our next contender, like Qt Creator, is intended to support the use of an application framework. TheIDE is the recommended way of developing applications using the Ultimate++ framework, about which I know very little. And I must confess I fell at the first hurdle – I could not create an empty project, much less add files to it. This looks like it could be a very interesting product, but it was too opaque for this casual user to get into. As I didn’t actually use it, I’m not going to enumerate good and bad points. Take a look at it yourself.

Bloodshed Dev-C++

The last IDE I want to draw your attention to is Dev-C++. I particularly want to draw your attention to the fact that you should on no-account think of using it. It is no longer being actively developed, is written in an ancient version of Delphi, is chock-full of bugs, and is ugly and difficult to use. I only mention it here because for some bizare reason no-one has ever worked out, many new C++ programmers select it as their IDE. Any of the other IDEs mentioned here will give you a far, far better C++ programming experience than this clunker. Avoid.

Conclusion

So that’s it. I may have missed out some worthy C++ IDEs (although I don’t think I have – please let me know if you disagree), and have had an interesting time playing with the ones I have described. I don’t think there is a clear winner, as all the major contenders have different strengths. For my own Windows C++ programming, which is mostly small-to-medium sized command line applications, I will be sticking with Code::Blocks.

Advertisements
3 Comments
  1. KarlNapf permalink

    About Qt Creator: You can configure creator to always show the build output in Tools->Options->Projects.

    Asking qmake to exclude the QtCore and QtGui libs should help with the libraries (CONFIG -= core gui). I don’t know how to fix the unicode issue, I do not use windows. I guess adding a define should be enough though (DEFINES += UNICODE or something).

    For your use case a generic project would have been better than doing a new qmake based one I guess: The latter is very much geared towards Qt, being the Qt build system.

    I actually like not having creator litter my source directory with its files by the way. If you want the crap in your sources you can always turn of shadow building in the build settings of the project.

    • @Karl

      Thanks – I was sure that there were ways of doing what I wanted, my point (perhaps not clearly made) was that they were very unobvious.

  2. KarlNapf permalink

    You are right: But then which IDE is obvious to the casual user?

    A IDE is a tool intended for people working with it for several hours a day, so optimizing for those people makes more sense to me than optimizing for first time users (which reviewers tend to be;-). I am very happy with Qt Creator and do prefer it to all the other IDEs out there… but I guess most people that went to the trouble of learning an IDE will say the same about whichever they have chosen:-)

    Anyway: Your post was an interesting read. Thanks for doing it.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: