Recently, Nokia released Carbide.c++ and Carbide.j, the first versions of the new generation of IDEs for Symbian OS development based on the open Eclipse platform. This is good news indeed, as Eclipse seems to be the only viable challenger (albeit still some way to go to become a real challenger, at least in the C++ department anyway, see below) to the Visual Studio family of products. Besides being an open platform, Eclipse has the added advantage of being cross platform, since its written using I hate to say the J word. Readers who have already decided to stop reading (after the J word that is :-D) the article should note that IBM did the right thing and implemented Eclipse using SWT. So for a change, the GUI does look and feel like something that was meant to run on the platform the software was written for, as opposed results produced by some zombified horrible attempt known as Swing. The version of Carbide.c++ that’s available now for download is Carbide.C++ Express. The express edition is far from being basic, it support all the major SDK available from S60, S80 and UIQ and provides a good debugging and coding environment. Best of all, its free. The only thing missing is a nice GUI designer. But then again, it was only Borland, with its legendary expertise in IDE development was the only vendor that actually went anywhere with a proper GUI designer for Symbian applications, maybe Nokia should get as much as possible ot of Borland, now that they have decided to quit the IDE business. There are two other commercial versions in the pipeline. According to Nokia, “Carbide.c++ Developer Edition, a version with additional application-development tools, has been designed for developers building applications with more-stringent quality and performance requirements. Carbide.c++ Professional Edition is a version designed for Symbian OS licensees creating Symbian OS devices or for developers working with licensees to create fundamental software components for devices.”
- Installation – Installing Carbide.c++ express is pretty straightforward. However, be aware that some of the tool chain uses old command line scripts that may not be aware of paths with spaces, so I recommend installing the express edition and any SDK that you might want to use with it. In my case, choosing a path with spaces resulted in failure of the tool chain to detect the UIQ 3.0 SDK that I had installed earlier. Other problems may include the failure by the tool chain to correctly update the devices.xml file, which lists the available SDKs in the system. The devices.xml file can be found in C:\Program Files\Common Files\Symbian\tools (yes, its always like this, the path Symbian\tools for is hard coded and can’t be changed during installation of Carbide.c++). If you have already an SDK installed in your system, it should look like this. Where each device tag specifies a SDK installed. You can always manually add a SDK (device) in case Carbide can’t recoginize any (use the sample attached as a template). Properly installed and recognized SDKs can be viewed from the Window->Preferences->Carbide.c++->SDK Preferences panel in Carbide.c++. Another thing to lookout for is, the Symbian GCC toolchain installer is a bit buggy, in my case, it forgot to add its install location to the path environment variable. As a result, I couldn’t initially do a GCCE Release build.
- Developing applications – The first time you start Carbide.c++, it prompts you for a default workspace, Eclipse style. Once again, I choose a path without spaces, not wanting to get any nasty surprise in the future. The workspace is used by Eclipse to store various global preferences etc and you can have as many as you want. Carbide.c++ comes built in with a variety of application templates, that can be accessed using the File->New menu. The application templates themselves have wizards that take you through to create a applications with the settings you specified. Carbide.c++ also lets you import application already written, using either the BLD.INF or MMP file to import a particular project. This can be accessed from File->Import menu. The first good thing that you notice after creating/importing/opening a project is the availability of Navigator and Outline View, akin to the project and class browser in Visual C++, and best of all, they work, specially the class browser, which was no where near complete in CodeWarrior. Another thing that works quite well is the C/C++ indexer, which assistes in code completion and its a lot better than CodeWarrior’s (however, its slow and incomplete compared to the auto completion feature in Visual Studio/C++ and if you are used to Visual Assist, don’t even think of comparing). Building and running projects in Carbide.c++ is pretty straightforward and covered in detail here.
- Performance problems and gripes – The Carbide.c++ editor supports C++ code folding, however the feature is broken and is not recommended. You can turn it on and see for yourself from Window->Preferences->C/C++->Editor and select the Folding Tab. The code editor also has a Quick Diff facility built in, yet another feature not recommended, because it slows down the editor badly. You can turn it off from Window->Preferences->General->Editors->Text Editors->Quick Diff. Another problem that I found with the editor is the lack of virtual space option. I’d enable it in any editor I use, but sadly, Carbide.c++ doesn’t have it :-(. Another problem for the first time user would be the way the general menu items and toolbars are laid out in Carbide.c++, which doesn’t exactly follow a standard Windows based application design. You’d expect to configure the various views from the View menu, there is none. You’ll find it in the Window menu. The Find/Replace dialog is pathetic. This zeal of resisting the mainstream (thereby creating confusion and chaos among the users) is strikingly similar to another IBM product, Lotus Notes, which has the reputation of being hated by just about everybody. I hope the Carbide.c++ camp is listening! The biggest gripe of all is the lack of support for Visual Studio key emulation, which means most of the developers out there would be cursing the first time they start using Carbide.c++. There’s no excuse for providing arcane Vi style shortcuts now days, the world has moved on. And finally, even though its written using SWT, the fact remains Carbide.c++ is a tool written using a garbage-collected language. Don’t expect it to be as fast as Visual Studio or even Code Warrior (at least it doesn’t crash as much and is stable). I’d recommend having at lease a gig of memory and a dual core processor based PC to make life easy.
My final verdict seems to be on favor of the new Eclipse based tool chain, barring the few oddities and gripes I mentioned above. Its a free tool with a gret feature and being open, I hope contributions from the community will only make it better. Also, a lot of the problem probably will be wiped out once the Eclipse CDT gets more stable.gets more stable.