首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Carthage构建时如何选择Swift工具链

使用Carthage构建时如何选择Swift工具链
EN

Stack Overflow用户
提问于 2016-10-08 11:18:47
回答 4查看 6K关注 0票数 3

我正在创建一个iOS应用程序,并使用Carthage构建外部库。由于我现在使用的库都是Swift 2和Swift 3,所以我遇到了一些困难。因此,我希望有一个Swift 2分支和一个Swift 3分支进行开发,然后在库都兼容Swift 3时合并它们。

但是,我无法选择用于使用Carthage构建的工具链(版本0.18)。

这是我的Cartfile的内容:

代码语言:javascript
复制
# Swift 2 libraries
github "stephencelis/SQLite.swift" ~> 0.10.1
github "Haneke/HanekeSwift"

# Swift 3 libraries
#github "stephencelis/SQLite.swift" "swift3"
#github "Haneke/HanekeSwift" "feature/swift-3"
#github "kitasuke/PagingMenuController"
#github "Alamofire/Alamofire" ~> 4.0

目前这是通过使用carthage update构建的。下面是一些验证我目前正在使用Swift 2的输出:

代码语言:javascript
复制
$ swift --version
Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31)
Target: x86_64-apple-macosx10.9
$ ls -lh $(which swift)
-rwxr-xr-x  1 root  wheel    18K Jul  8 19:52 /usr/bin/swift

现在我想切换到使用Swift 3构建。我在/Library/Developer/Toolchains中安装了多个工具链,在运行安装程序时OSX会在这里安装它们:

代码语言:javascript
复制
$ ls -lh /Library/Developer/Toolchains
drwxr-xr-x  6 root  wheel   204B Sep 30 20:07 swift-2.2.1-SNAPSHOT-2016-04-23-a.xctoolchain
drwxr-xr-x  7 root  wheel   238B Sep 30 17:41 swift-3.0-RELEASE.xctoolchain
drwxr-xr-x  7 root  wheel   238B Oct  6 20:53 swift-3.0.1-PREVIEW-2.xctoolchain
lrwxr-xr-x  1 root  wheel    30B Oct  8 12:51 swift-latest.xctoolchain -> swift-3.0-RELEASE.xctoolchain/

请注意,我同时安装了Xcode8和Xcode7:

代码语言:javascript
复制
$ ls /Applications/Xcode*
/Applications/Xcode.app:
Contents
/Applications/Xcode8.app:
Contents
$ xcodebuild -version
Xcode 7.3.1
Build version 7D1014

现在,假设我有以下场景:

代码语言:javascript
复制
$ cat Cartfile
github "Alamofire/Alamofire" ~> 4.0
$ carthage update --toolchain com.apple.dt.toolchain.Swift_3_0
*** Fetching Alamofire
*** Checking out Alamofire at "4.0.1"
*** xcodebuild output can be found in /var/folders/wg/fjk346qs7mx8fhplf8_805wm0000gn/T/carthage-xcodebuild.zfHVn5.log
*** Building scheme "Alamofire iOS" in Alamofire.xcworkspace
warning: failed to load toolchain 'com.apple.dt.toolchain.Swift_3_0': Could not find toolchain: com.apple.dt.toolchain.Swift_3_0

我就是不能让它起作用。所以我的问题是:

如何使用另一个工具链构建迦太基?

以下是我尝试过的:

  1. 更改swift-latest.xctoolchain到其他事物的符号链接。没什么区别。
  2. 手动将工具链添加到.bashrc中的.bashrc变量中,但这并没有什么区别。 $ cat ~/..bashrc出口PATH="$PATH:/Library/Developer/Toolchains/swift-2.2.1-SNAPSHOT-2016-04-23-a.xctoolchain/usr/bin/“PATH="$PATH:/Library/Developer/Toolchains/swift-3.0-RELEASE.xctoolchain/usr/bin/”PATH=“$PATH:/Library/Developer/Toolchains/swift-3.0-RELEASE.xctoolchain/usr/bin/”PATH="$PATH:/Library/Developer/Toolchains/swift-3.0.1-PREVIEW-2.xctoolchain/usr/bin/“
  3. 使用TOOLCHAINS=com.apple.dt.toolchain.Swift_3_0 carthage build和类似的方式运行构建,但是没有区别(仍然找不到工具链)。
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-23 07:14:34

对于Carthage 0.17,有一个选项--toolchain允许指定用于构建的确切的工具链ID。示例用法:

代码语言:javascript
复制
carthage update --toolchain org.swift.402017072a

工具链的ID来自工具链的CFBundleIdentifier文件中的Info.plist键。

票数 20
EN

Stack Overflow用户

发布于 2016-10-21 16:27:30

我通过使用sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/或类似命令来解决这个问题,从而将工具链设置为适当的。这将是迦太基使用的默认方法。我不知道如何在运行迦太基时选择另一个工具链。

票数 2
EN

Stack Overflow用户

发布于 2019-12-04 13:25:25

您可以使用

代码语言:javascript
复制
export TOOLCHAINS="org.swift.51220191107a"
export TOOLCHAIN_DIR=/Library/Developer/Toolchains/swift-5.1.2-RELEASE.xctoolchain

carthage update

下载Swift工具链https://swift.org/download/#releases

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39931725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档