View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0011570CMakeCMakepublic2010-12-04 03:212010-12-17 09:12
ReporterMatthew Firlik 
Assigned ToBrad King 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformApple MacOSOS XOS Version10.4.10
Product VersionCMake 2.8.3 
Target VersionFixed in Version 
Summary0011570: CMake generates older Xcode project versions; must always be upgraded
DescriptionWhen 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.
Steps To Reproduce- 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"
TagsNo tags attached.
Attached Files

 Relationships

  Notes
(0024231)
Brad King (manager)
2010-12-17 09:12

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f7d525e3 [^]

 Issue History
Date Modified Username Field Change
2010-12-04 03:21 Matthew Firlik New Issue
2010-12-07 12:57 Bill Hoffman Assigned To => Bill Hoffman
2010-12-07 12:57 Bill Hoffman Status new => assigned
2010-12-17 09:12 Brad King Note Added: 0024231
2010-12-17 09:12 Brad King Status assigned => closed
2010-12-17 09:12 Brad King Assigned To Bill Hoffman => Brad King
2010-12-17 09:12 Brad King Resolution open => fixed


Copyright © 2000 - 2018 MantisBT Team