如何为不同的分支使用不同的 Xcode 版本(或具有不同 Clang 版本的最新 Xcode)?

  • 本文关键字:版本 Xcode Clang 最新 分支 c++ xcode clang
  • 更新时间 :
  • 英文 :


我们使用不同版本的 Xcode 编译项目的不同分支,因为它内置了不同版本的 c++ 编译器"clang"。新的编译器不仅意味着新功能,而且不幸的是,新的编译器错误(因此有新的解决方法(。因此,我们希望在分支项目的稳定版本后保留编译器,但始终使用最新的编译器作为主干

安装多个 Xcode 版本很容易:我们只需将版本号添加到名称中,因此我们得到:

/Applications/Xcode9
/Applications/Xcode10
/Applications/Xcode11

对于集成服务器和其他脚本,可以轻松选取和启动所需的版本

xcode-select -s /Applications/Xcode10.app
xcodebuild -project myproj.xcodeproj build

但是对于使用Xcode作为图形IDE在不同的分支上工作,这被证明是一个很大的问题:

  • 与Visual Studio Solutions(.sln和.vcxproj(不同,Xcode Projects(.xcproj(不支持它们打开的IDE版本的规范。
  • 不同版本的 Xcode 不能很好地协同工作,并且似乎会覆盖彼此的设置和缓存(例如,打开了哪些项目/窗口,甚至构建状态(。

我解决这个问题的最后希望是始终使用最新的 XcodeIDE,但让它使用早期的编译器版本

"构建选项">下似乎有一个项目设置,称为C/C++/Objective-C编译器(通过.xcconfig设置时GCC_VERSION(,标准值为默认编译器 (Apple Clang( (com.apple.compilers.llvm.clang.1_0(。

但是,我无法找到可以在那里使用的另一个有效值。到目前为止,我已经尝试了 clang 版本号和 clang 可执行文件的路径(例如/Applications/Xcode10.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang(。Xcode 总是说不受支持的编译器

那么在 Xcode 中指定另一个编译器版本的正确方法是什么?或者你知道另一种解决原始问题的方法吗?

我找到了一种在最新的 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

最新更新