使用Swift 3.2.2(不是Swift 4.0)告诉Carthage构建依赖项

eta*_*luz 8 xcode swift carthage swift4 swift3.2

我有一个用Swift 3.2.2编写的项目,并使用XCode 9.1编译

我有一个使用此命令使用Carthage构建的依赖项:

carthage update --platform iOS

问题是Carthage使用Swift 4.0(而不是Swift 3.2.2)构建依赖项

使用Swift 4.0编译的模块无法在Swift 3.2.2中导入

如何告诉Carthage使用Swift 3.2.2构建我的依赖项,以便它可以在我的项目中使用?

我还不想将我的项目升级到Swift 4.0.

Xcode 9.1支持Swift 3和Swift 4.那么如何在编译依赖时告诉Carthage使用Swift 3?我不想告诉它使用早期版本的XCode(我不再拥有)

And*_*ini 7

你说:

  1. 您的项目正在Swift 3.2.2中编译
  2. 您的依赖项,一旦解决并与Carthage一起下载,将在Swift 4中进行编译(因为它的构建设置是以这种方式配置的)

有了这些条件你将无法解决问题:你不能混合使用Swift 3和4:https: //github.com/Carthage/Carthage/issues/1978

你唯一可以做的事情是(最终)解决这个问题:


场景1

  1. 你应该找到一个以Swift 3.2~构建的库的先前版本,如果存在的话
  2. 在Cartfile上指定特定版本,例如:

    github "yourDependency" == x.y.z


情景2

  1. 发射 carthage update --platform iOS
  2. 进入您的依赖文件夹(Carthage/Checkouts/yourDependency)并打开.xcodeproj以手动修改此选项:

在此输入图像描述

  1. 那么你可能会遇到大量的构建问题,因为你正在制作一个语言回归,你可以尝试修复它们(如果很小或者没有,那么它可能是可能的).
  2. 如果你已经解决了依赖关系,那么启动:

    carthage build --platform iOS

  3. 尝试编译你的项目......