我们使用不同版本的Xcode编译项目的不同分支,因为它具有内置的c ++编译器“ clang”的不同版本。而且,新的编译器不仅意味着新功能,而且还意味着新的编译器错误(因此有了新的解决方法)。因此,我们希望分支后保持编译器项目的稳定版本,但始终将最新的编译器用于主干。
安装多个Xcode版本很容易:我们只需在名称中添加版本号,即可得到:
/Applications/Xcode9
/Applications/Xcode10
/Applications/Xcode11
对于集成服务器和其他脚本,可以轻松选择所需版本并使用
启动xcode-select -s /Applications/Xcode10.app
xcodebuild -project myproj.xcodeproj build
但是对于使用Xcode作为图形化IDE在不同的分支上工作,这被证明是一个问题:
我最后的解决方案是始终使用最新的Xcode IDE,但使用较早的编译器版本。
在 Build Options 下似乎有一个项目设置,称为{em> C / C ++ / Objective-C编译器(GCC_VERSION
,当通过{ {1}}),其标准值为默认编译器(Apple Clang)(.xcconfig
)。
但是,我找不到可以在此处使用的另一个有效值。到目前为止,我已经尝试了clang version number和clang可执行文件的路径(例如com.apple.compilers.llvm.clang.1_0
)。 Xcode总是说不受支持的编译器。
那么在Xcode中指定另一个编译器版本的正确方法是什么?还是您知道另一种解决原始问题的方法?
答案 0 :(得分:0)
我找到了在最新的IDE中使用较旧的clang版本的方法。本示例适用于在Xcode 11.3中使用 Apple LLVM版本10.0.0(clang-1000.11.45.2):
在.xcconfig
文件中(菜单->文件->新建->文件,“配置设置文件”),可以使用
CC = /Applications/Xcode10.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
CPLUSPLUS = /Applications/Xcode10.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
但这还不够:较新的Xcode安装的系统头文件有时与旧的编译器不兼容。我们需要相应地为这些文件设置根目录
OTHER_CFLAGS = -isysroot /Applications/Xcode10.app/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk