The UT library is set up for the XCode IDE. It's pretty straightforward, with a few exceptions:
1. It is not possible to have static and dynamic lib configurations exist for the same target. The UT project and project templates are therefore set up to have two library targets, one for the static version and one for the dynamic version. Likewise, executables have two targets, one to link against static UT-based libraries and one to link against dynamic UT-based libraries. The output from each of these targets will end up in either the Debug or Release folder, depending on the active configuration.
2. This makes perfect sense, but merits clarification. A target dependency on another target is not the same thing as linking against the dependency. Dependencies can be set using the target's Get Info window. This will cause the dependency target to be built when needed before building the actual target. To have the target link against a library though, drag the library into the "Link Binary With Libraries" folder in the target. Make sure to drag a static library into the "Link Binary With Libraries" folder for the static libs target of an executable and a dynamic library for the dynamic libs target. At the very least, this would be libUTstatic.a for the static libs version of an executable, and libUT.dylib for the dynamic libs version. For a UT-based library project, the dynamic libs version needs to link against libUT.dylib.
3. XCode has a Load Symbols Lazily option in Xcode Preferences Debugging tab, and it is enabled by default. Unfortunately, if it's enabled, setting breakpoints in libraries won't work. The symptom of this problem is breakpoints appearing as orange.
4. XCode has a ZeroLink (ZERO_LINK in the project file viewed as text) option. It is enabled by default for debug builds. All this option seems to do is when there are unresolved symbols, it allows the link to succeed and then the application fails to launch. Since it's better to detect unresolved symbols at link time, turn this option off.