我今天早些时候刚刚升级到Xcode 4.2和iOS SDK 5。但是新的编译器似乎有些不同。
现在有两个“Compiler for C / C ++ / Objective-C”选项,“Apple LLVM编译器3.0”和“LLVM GCC 4.2”。缺少GCC 4.2。
Apple LLVM编译器3.0,构建速度非常快(我喜欢它),给了我999+警告,我的游戏再也无法运行了。看起来内存存在一些差异,加载游戏脚本时会崩溃。
LLVM GCC 4.2真是太神了,我仍然无法在我的i7机器上完成一次构建。
而且,还有一件事是我们的引擎使用gcc命令行来构建(而不是xcode)。
因此,它导致了一个问题,如何在Xcode 4.2中使用gcc 4.2 ?这甚至可能吗?
答案 0 :(得分:4)
以下是在 xcode 4.2 中使用 gcc 4.2 进行编译的方法。其中大部分是通过命令行完成的,所以当你看到如下所示的行:[ 15:30 jon@MacBookPro / ]$
时,你需要打开终端并在$
之后运行命令。
此过程中没有文件或目录被删除或已删除,因此如果您将来需要使用LLVM进行编译,则很容易撤消。
下载 - 但不安装 - xcode_4.1_for_lion.dmg或xcode_4.1_for_snow_leopard.dmg
现在,按照以下步骤将Xcode 4.1安装到/Developer-4.1
:
备份工作/Developer
目录(安装Xcode 4.2的地方)
[ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.2
使用默认安装位置(/Developer
)运行Xcode 4.1安装程序
将新的Xcode 4.1安装移至/Developer-4.1
:
[ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.1
将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"
从此处更改 41 和 42 行:
ShowInCompilerSelectionPopup = NO;
IsNoLongerSupported = YES;
To This:
ShowInCompilerSelectionPopup = YES;
IsNoLongerSupported = NO;
备份Xcode 4.2 iOS /模拟器框架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
将gcc
和info
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进行编译!
[1] 如果从命令行打开(使用vi
,emacs
,nano
之类的东西等),请确保封闭路径在引号“/ long path / with spaces / in / file.xcspec”或转义空格 / some / long \ path / with \ spaces / in \ it / file.xcspec < / KBD>
[2] 这是必要的,因为iPhoneOS.platform SDK有自己独立的/usr/lib
目录,但iPhoneSimulator.platform SDK没有
答案 1 :(得分:3)
在今年的WWDC中,Apple表示GCC已不再适用于XCode 4.2。但是,他们表示LLVM编译器支持与GCC相同的命令行开关。
答案 2 :(得分:1)
我尝试为适用的Xcode版本更新此内容。这将显示如何安装Xcode 4.4.x并支持完整的gcc。
你需要:Mac OSX Lion - 这很重要,不要试试Mountain Lion!
您需要:Lion的Xcode 4.1副本。使用您的开发者帐户从Apple下载。不要安装。
现在通过Mac App Store从Apple安装Xcode 4.4.x.
完成此操作后,您的应用程序目录中将包含xcode 4.4.x.
根据用户权限,您必须使用管理员密码确认许多操作。必要时这样做。如果你损坏你的系统,你就是你自己(不应该发生,因为Xcode已经被应用了)。
通过鼠标右键单击和“显示包内容”打开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和第41行。确保它们看起来与此处显示的完全相同(值将在全新安装中反转)。
ShowInCompilerSelectionPopup = YES;
IsNoLongerSupported = NO;
保存并关闭。
为Lion安装Xcode 4.1。
现在导航到启动驱动器根目录下的开发人员目录。
导航至/Developer/Platforms/iPhoneOS.platform/Developer/usr /
使用command-c
复制usr目录切换回xcode 4.4.x
导航至:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer /
使用command-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
现在通过选择它并使用command-c
来复制gcc目录导航到Xcode 4.4.x应用程序:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib
使用command-v
粘贴gcc目录使用'info'目录从/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib重复 目标是/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib
完成。启动xcode并在必要时在设置中选择GCC 4.2。您应该删除过时的“开发人员”目录。
Xcode现在也应该再次通过Mac App Store接受更新(这仍有待测试)。我也没有下载命令行工具,但我的猜测是它也会存活下来。