wxWidgets is a nice, cross-platform C++ GUI library. It’s generally easy enough to use (as such things go) and produces results that are, on Mac, Windows and Linux, nothing short of stunning for a cross-platform library. To be sure, it’s not as nice as cocoa on the Mac, but if cross-platform compatibility is a must, I recommend it unreservedly. There are instructions floating around for using it with XCode, but none seem to be quite accurate right now. Don’t use the project template that’s about; it doesn’t work. Here’s how to create a new project using XCode for use with wxWidgets:

  1. Build wxWidgets per the instructions on wxwidgets.org.
  2. Run the wx-config from the build you just made twice. Once with –cxxflags and once with –libs. Record the output.
  3. Edit the output from wx-config –libs to remove any -arch flags.
  4. Create a new empty project using XCode’s wizard.
  5. Add a new Carbon target.
  6. “Get Info” for that target and edit the “Other Linker Flags” to include your edited output from wx-config –libs
  7. Add your source files to the project in whatever groups you like. (For example, if you have output from wxDesigner, add it here.)
  8. “Get Info” on the target again and edit the following settings:
    • put the output from wx-config –cxxflags into “Other C++ flags”
    • disable Zero Link
    • disable “Precompile prefix header”
    • remove the path from “Prefix header”

It’s clearly more involved than setting up a standard cocoa project, and the results aren’t quite as nice. But you’ll have nice cross-platform GUI source code that, if you are careful, will look and feel right to users of each platform.

This is distilled from various mailing list posts and information available on the wxWidgets wiki. Good luck.