Archive for April, 2008

WordRecorder 1.0 released

Monday, April 21st, 2008

WordRecorder was a program I wrote for my friend Matt to help him record hundreds of spoken names for his video e-card site. It’s a pretty specialized program and I doubt more than a handful of people out there will actually have a need for it, but the source code may be of use to people trying to figure out how to use Apple’s CoreAudio Frameworks and the Qt Interface Toolkit.

I’ll try to post more details about its design and how it works in the coming days. For now, visit the main WordRecorder page here.

Xcode 3 doesn’t like projects generated by qmake

Sunday, April 20th, 2008

When trying to build a Universal version of my WordRecorder app I discovered that I could not view the properties window for my executable target, the project itself, or the project’s SCM options. Xcode gave me the following lovely error:

XCode: Internal Error

I don’t know what this is about, but through some hacking and tinkering with the Xcode file I came up with the following messy workaround:

  1. Make your Xcode project using qmake -spec macx-xcode if you haven’t already.
  2. Open/reload the resulting project in XCode 3. Trying to edit the project properties will yield the above error.
  3. Save the Project. This step is necessary as it makes Xcode totally reformat the file making the edit we’re about to do much easier.
  4. Open the project’s “project.pbxproj” file in your text editor. It lives inside the “.xcodeproject” folder so you’ll have to do a “Show Package Contents” to see it in the Finder.
  5. Find the following comment (”hello_world” will be the name of your own target)
    /* Build configuration list for PBXNativeTarget "hello_world" */
  6. Beneath this comment you’ll see the following list of build configurations (the actual IDs will be different):
    isa = XCConfigurationList;
    buildConfigurations = (
    2F9BD7250DBC2F9500BBEE4F /* Debug */,
    2F9BD7260DBC2F9500BBEE4F /* Release */,
    2F9BD7270DBC2F9500BBEE4F /* Default */,
    );
  7. Remove the entire line containing the identifier with the name ‘Default’ and save the file. The result will look like this:
    isa = XCConfigurationList;
    buildConfigurations = (
    2F9BD7250DBC2F9500BBEE4F /* Debug */,
    2F9BD7260DBC2F9500BBEE4F /* Release */,
    );
  8. Go back to Xcode. It should prompt you to reload the project from disk. Reload it. You should now be able to edit your project’s properties again. Unfortunately you will have to repeat this step whenever you rebuild your project using qmake.

I don’t know why this fix works, but it beats having to recreate our Xcode project by hand, and everything still seems to build without incident after the fix.

I’m not sure if this is Apple or Trolltech’s problem as I can’t remember if this worked in Qt 4.3.3 / Xcode 2. Xcode 3 probably isn’t officially supported by qmake yet, anyway.