On Feb 19, 2009, at 9:05 PM, Gordon Apple wrote: This question isn't specific to any unnamed system. I haven't done this before. My question is what is the best practice when moving back and forth between one major version of the operating system (and Xcode) and a newer version of the operating system (and Xcode) while trying to keep the same code base? I'm having a few issues with that. Is it best to create a new project and just copy all the code references into the new project? Just trying to create new targets doesn't seem to be getting the flexibility that I want since I'm also switching versions of Xcode.
There are three things at play here.
Code base and API Portable code should define what API it uses, what architecture it builds for, and what compiler it wants, rather than accepting the system defaults. A project that builds with system defaults on Xcode 2.5 on Tiger might not build as desired on Xcode 3.1 on Leopard. The more tightly you specify the build environment—using SDKs, compiler version settings, architectures, etc.—the more likely you'll get predictable results.
In general you don't need to make new targets; just go through each target's build settings with a fine-tooth comb and make sure they're set up with specifics rather than default assumptions.
Project File compatibility Xcode project files are generally upwards and backwards compatible among Xcode 2.4 through 3.1.2. Of course moving a project file from a newer Xcode to an older one won't magically embue that older Xcode with new features :-) But in most cases, if you use a feature on a newer version of Xcode, but set the Compatibility Version to an older one, you'll either be warned about the incompatibility, or the feature settings will just work on newer Xcodes and be ignored on older ones. This varies on a feature by feature basis, and there are far too many new features in Xcodes 2.5, 3.0, 3.1, and 3.1.x to enumerate them all.
Preferences Xcode per-user preferences are generally forward and backward compatible among versions, so you can use Xcode 2.5 side by side with 3.0 and 3.1 on one user account, and settings you make in one version of Xcode will be heeded by others.
|