MantisBT - CMake
View Issue Details
0011570CMakeCMakepublic2010-12-04 03:212010-12-17 09:12
Matthew Firlik 
Brad King 
normalminoralways
closedfixed 
Apple MacOS X10.4.10
CMake 2.8.3 
 
0011570: CMake generates older Xcode project versions; must always be upgraded
When using CMake to generate an Xcode project, the resulting project uses the Xcode v3.1 compatibility format. The current project format is v3.2.

While all of the Xcode IDE v3.2 releases will read the v3.1 format, and using that format provides wide-ranging compatibility for developers who may not have upgraded their tool chain, it also forces the IDE and command-line build tool (xcodebuild) to always upgrade the project format in memory ... every time the project is opened or built. The upgrade logic is optimized to be efficient, but not performing it at all is better: for large projects (like LLVM, which has 200 targets and thousands of files), avoiding the upgrade is beneficial. (And while developer's can upgrade the format from within the IDE, most will not know to.)

Xcode v3.2 was provided with Snow Leopard, released in August of 2009: it is required for all current iOS development, and with the addition of features like static analysis it is the tool chain most Cocoa developers have moved to. (Obviously, Xcode v3.2.x is the currently recommended tool chain.)

The forthcoming Xcode 4.0 release will use the same project format as Xcode v3.2 (for complete build compatibility during migration.) Moving the project compatibility format used in the CMake conversion to v3.2 it will further reduce the upgrade need for projects.
- Run the cmake conversion on a larger project (like LLVM) to output an Xcode project
- In a text editor, open the embedded project.pbxproj file
- Look for the following keys:

    objectVersion = 45;
    compatibilityVersion = "Xcode 3.1"

- Launch Xcode v3.2.x
- Open the resulting project

- Open the project inspector, and change the project compatibility format to v3.2
- Close the project
- In a text editor, open the embedded project.pbxproj file
- Look for the following keys:

    objectVersion = 46;
    compatibilityVersion = "Xcode 3.2"
No tags attached.
Issue History
2010-12-04 03:21Matthew FirlikNew Issue
2010-12-07 12:57Bill HoffmanAssigned To => Bill Hoffman
2010-12-07 12:57Bill HoffmanStatusnew => assigned
2010-12-17 09:12Brad KingNote Added: 0024231
2010-12-17 09:12Brad KingStatusassigned => closed
2010-12-17 09:12Brad KingAssigned ToBill Hoffman => Brad King
2010-12-17 09:12Brad KingResolutionopen => fixed

Notes
(0024231)
Brad King   
2010-12-17 09:12   
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f7d525e3 [^]