【问题标题】:How can I use different Xcode versions for different branches (or latest Xcode with different Clang versions)?如何为不同的分支使用不同的 Xcode 版本(或具有不同 Clang 版本的最新 Xcode)?
【发布时间】: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-CGCC_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 中指定另一个编译器版本的正确方法是什么?或者您知道解决原始问题的另一种方法吗?

【问题讨论】:

    标签: c++ xcode clang


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-12-30
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多