CodeWarrior6
Volume Number: 17
Issue Number: 1
Column Tag: Tools of the Trade
By Tim Monroe
A Look at the Latest Mac Version of Metrowerk's
Development Environment
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.