CodeWarrior6
Volume Number: 17 (2001)
Issue Number: 1
Column Tag: Tools of the Trade
CodeWarrior 6
By Tim Monroe
A Look at the Latest Mac Version of Metrowerk's Development Environment
Introduction
CodeWarrior 6.0 (CW6) is the latest version of Metrowerk's popular integrated development environment (IDE) for Macintosh and Windows (and, I believe, the first version to carry the Motorola brand name). In addition to all the standard improvements you'd expect to find in a major release of a professional IDE (bug fixes, greater compliance with existing standards, improved performance, and the like), CodeWarrior 6.0 takes one major step forward: all important parts of the software development environment have been Carbonized, including the IDE itself, PowerPlant (the object-oriented application framework), Constructor, and Profiler. This means that it's possible to do complete application development on "classic" Macintosh operating systems (Mac OS 8.x and 9.x) and on Mac OS X. (CodeWarrior 6.0 also runs on Windows computers, but I did not receive a review copy of the Windows install disk, so I can't comment on how well that new version works.)
Some Test Drives
I first took CodeWarrior 6.0 for a spin on Mac OS 9.0.4. As usual, installation was a snap. The IDE wanted to convert my existing project files for use with the new IDE (version 4.1, for what it's worth). After that, compiling, linking, and debugging proceeded exactly as they did under previous versions of the IDE. The entire CodeWarrior 6.0 suite has received a minor facelift; for instance, the Finder icons are different, and the project window (shown in Figure 1) has undergone some reorganization. (In earlier IDEs, the tabs hung down from the top of the window.)
Figure 1. A project window under Mac OS 9.
Then I decided to get brave. I usually like to develop Windows versions of my applications using the Mac IDE. I didn't have the Windows IDE, but the Mac installation still includes compilers and linkers for x86 development. Once again, my existing Windows projects compiled and linked flawlessly (after allowing the IDE to make the necessary project conversion). CodeWarrior 6.0, however, uses a different method for specifying the remote target for two-machine debugging. Under previous versions, you could specify only a single remote target for all projects, in the IDE Preferences window (Figure 2).
Figure 2. Setting a remote debugging target (CW 5).
Under CW6, you can define any number of remote targets in the IDE Preferences window (Figure 3). Each individual project can then specify which one of those targets to use for any particular debugging session (see Figure 4). This is a very nice enhancement.
Figure 3. Setting remote debugging targets (CW 6).
Figure 4. Specifying a remote target.
Pedal to the Metal
Finally, I decided to get really brave and run the IDE under Mac OS X. I installed the Public Beta version of OS X on an external hard drive, booted up, and then launched the IDE. I must admit to having had a certain trepidation as the IDE launched, but my fears subsided as the project window opened and greeted me with its jaunty Aqua appearance (Figure 5).
Figure 5. A project window under Mac OS X.
Once again, the project compiled, linked, and ran flawlessly. Moreover, remote debugging between the Mac OS X machine and a machine running Mac OS 8.6 worked just fine. What did not work at all was local debugging - that is, trying to step through the code on the Mac OS X machine itself. (I kept getting a network timeout error; go figure!) After trolling the comp.sys.mac.programmer.codewarrior news group, I discovered that I needed to perform the Codewarrior installation while running Mac OS X. Once I did that, local and remote debugging worked as expected.
CodeWarrior 6 running on Mac OS X seems to be a fairly solid and stable product, at least in my preliminary tests. As is to be expected, there are some cosmetic glitches. Figure 6, for instance, shows a dialog box in which some of the text is clipped. All in all, however, I was pleasantly surprised at how well the product performed, especially considering that it's running on a beta version of a brand new operating system.
Figure 6. A dialog box with clipped text.
Conclusion
Should you upgrade to CodeWarrior 6.0 from an earlier version? For most Mac programmers, this is a no-brainer: sure, stay up to date with the latest and greatest tools. This is especially true if you want to get your product working under Mac OS X or you want to do your software development under Mac OS X. You can develop Carbonized applications using CW5, but not under Mac OS X. For the complete Carbon story, and especially for local debugging under OS X, CodeWarrior 6.0 is the way to go.
Some developers, however, might want to hold off making the leap to CW6, even though it's a fairly tiny leap in terms of code changes. If you're deep into a project that uses CW5 or earlier, you may want to finish that project before moving forward. After all, since the compilers have become more compliant to the ANSI standards, some of your existing code might get signaled as non-compliant (especially if it is non-compliant). In my own projects, I didn't encounter any such problems, but of course your mileage may vary. In my mind, the ability to specify remote debugging targets on a per-project basis is worth the price of upgrading all by itself.
Tim Monroe is a software engineer on Apple's QuickTime engineering team. You can contact him at monroe@apple.com. His opinions, of course, are his own and not those of his employer.