【发布时间】:2019-12-06 12:20:17
【问题描述】:
我们使用不同版本的 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 解决方案(.sln 和 .vcxproj)不同,Xcode 项目 (.xcproj) 不支持它们打开的 IDE 版本的规范。
- 不同版本的 Xcode 不能很好地协同工作,并且似乎会覆盖彼此的设置和缓存(例如打开的项目/窗口,甚至构建状态)。
我解决这个问题的最后希望是始终使用最新的 Xcode IDE,但让它使用较早的编译器版本。
Build Options 下似乎有一个项目设置,称为 Compiler for C/C++/Objective-C(GCC_VERSION 当通过 .xcconfig 设置时) 具有标准值 Default Compiler (Apple Clang) (com.apple.compilers.llvm.clang.1_0)。
但是,我找不到可以在那里使用的另一个有效值。到目前为止,我已经尝试过 clang version number 和 clang 可执行文件的路径(例如 /Applications/Xcode10.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang)。 Xcode 总是说 Unsupported Compiler。
那么在 Xcode 中指定另一个编译器版本的正确方法是什么?或者您知道解决原始问题的另一种方法吗?
【问题讨论】: