在Xcode 4.2和iOS SDK 5.0中使用gcc 4.2

我今天早些时候升级到了Xcode 4.2和iOS SDK 5。 但是新编译器的一切似乎都不一样。

现在有两个“C / C ++ / Objective-C编译器”选项,“Apple LLVM编译器3.0”和“LLVM GCC 4.2”。 GCC 4.2缺失。

苹果LLVM编译器3.0,构build真快(我喜欢这样),给我999 +警告,我的游戏不能再运行。 看起来内存有些不同,加载我们游戏的脚本时崩溃了。

LLVM GCC 4.2是如此神速,我仍然无法在我的i7机器上完成一个小时后的构build。

而且,还有一件事是我们的引擎使用gcc命令行来构build(而不是xcode)。

所以,这导致了一个问题, 我如何在Xcode 4.2中使用gcc 4.2 ? 这甚至可能吗?

这是一个在xcode 4.2中使用gcc 4.2编译的方法。 其中大部分是通过命令行完成的,所以当你看到这样的行时: [ 15:30 jon@MacBookPro / ]$ ,你需要打开一个terminal并在$后面运行命令。

在这个过程中没有文件或目录被删除删除 ,所以如果将来需要使用LLVM进行编译,则很容易撤销。

  1. 下载 – 但不要安装 – xcode_4.1_for_lion.dmg或xcode_4.1_for_snow_leopard.dmg

  2. 现在,请按照以下步骤将Xcode 4.1安装到/Developer-4.1

    1. 备份working /Developer目录(安装Xcode 4.2)

    2.  [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.2 
  3. 使用默认安装位置( /Developer )运行Xcode 4.1安装程序

  4. 将新的Xcode 4.1安装移到/Developer-4.1

     [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.1 
  5. 将Xcode 4.2开发者目录移回到/Developer

     [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer-4.2 /Developer 
  • 编辑Xcode 4.2 GCC 4.2.xcspec文件以获得gcc 4.2在编译器选项列表中显示[1]

     [ 15:30 jon@MacBookPro / ]$ sudo vi "/Developer/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/GCC 4.2 (Plausible Blocks).xcplugin/Contents/Resources/GCC 4.2.xcspec" 
    • 改变第4142行:

       ShowInCompilerSelectionPopup = NO; IsNoLongerSupported = YES; 
    • 为此:

       ShowInCompilerSelectionPopup = YES; IsNoLongerSupported = NO; 
  • 备份Xcode 4.2 iOS / Simulator Framework usr目录:

     [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer/Platforms/iPhoneOS.platform/Developer/usr /Developer/Platforms/iPhoneOS.platform/Developer/usr.backup [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer/Platforms/iPhoneSimulator.platform/Developer/usr /Developer/Platforms/iPhoneSimulator.platform/Developer/usr.backup 
  • 将Xcode 4.1 iOS / Simulator Framework的usr目录复制到Xcode 4.2:

     [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/usr /Developer/Platforms/iPhoneOS.platform/Developer/usr [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/usr /Developer/Platforms/iPhoneSimulator.platform/Developer/usr 
  • gccinfo iOS SDK库目录从Xcode 4.1复制到Xcode 4.2 [2]

     [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/gcc /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/gcc [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/info /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/info 
  • 使用gcc-4.2编译!

    xcode 4.2中的CGG 4.2截图


  • 这是我写了一个关于这个过程的更多信息的博客文章。 如果您遇到任何问题或有任何问题,请随时在博客上发表评论。


    [1]如果从命令行打开(使用viemacsnano等),请确保将path用引号“/ long path / with spaces / in it / file.xcspec”或转义空格/ some / long \ path / with \ spaces / in \ it / file.xcspec

    [2]这是必要的,因为iPhoneOS.platform SDK有它自己的独立的/usr/lib目录,但iPhoneSimulator.platform SDK不

    苹果公司在今年的WWDC上表示,XCode 4.2中不再提供GCC。 但是,他们表示LLVM编译器支持与GCC相同的命令行开关。

    我试图更新这个Xcode的应用版本。 这将显示如何安装Xcode 4.4.x全面的gcc支持。

    您需要:Mac OSX Lion – 这很重要,不要尝试与山狮!

    您需要:Lion的Xcode 4.1的副本。 从您的开发者帐户从苹果下载。 不要安装。

    现在通过Mac App Store从Apple安装Xcode 4.4.x。

    完成之后,您的应用程序目录中将包含xcode 4.4.x。

    根据用户权限,您必须使用pipe理员密码确认许多操作。 只要有需要就这样做。 如果你损坏了你的系统,那么你是自己的(尽pipeXcode已经被使用过了,但这不应该发生)。

    打开Xcode 4.4.x通过右键单击和“显示包内容”,然后导航到这里的gcc 4.2插件:

    /Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/GCC 4.2.xcplugin / Contents / Resources /

    用文本编辑器打开文件gcc 4.2.xcspec。

    看第41行和第42行。确保它们看起来完全如此(在新的安装中将会颠倒这些值)。

     ShowInCompilerSelectionPopup = YES; IsNoLongerSupported = NO; 

    保存并closures。

    为Lion安装Xcode 4.1。

    现在导航到启动驱动器根目录下的开发者目录。

    导航到/Developer/Platforms/iPhoneOS.platform/Developer/usr/

    用命令c复制usr目录

    切换回到xcode 4.4.x

    导航到:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/

    用命令-v粘贴usr目录

    现在狮子会尝试合并这两个目录。 确保按“保持较新”

    重复源代码:/Developer/Platforms/iPhoneSimulator.platform/Developer/usr目标:/Applications/Xcode.app/Contents/Developer/Platforms/usr

    再次,合并和“保持较新”

    导航到:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib

    现在通过select它并使用命令c复制gcc目录

    导航到Xcode 4.4.x应用程序:

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib

    用命令-v粘贴gcc目录

    从/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib重复“info”目录目标是/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer /SDKs/iPhoneOS5.1.sdk/usr/lib

    完成。 启动xcode并在必要时在设置中selectGCC 4.2。 您应该删除过时的“开发人员”目录。

    Xcode现在也应该再次接受通过Mac App Store的更新(这还有待testing)。 我也没有下载命令行工具,但我的猜测是它也能存活下来。

    Interesting Posts