使用Swift软件包管理器将Swift 3软件包添加到Xcode 8

24

我刚接触Swift和Xcode。我正在运行macOS Sierra和Swift 3。

为了初步学习Swift,我正在开发一个简单的命令行工具。有几个Swift包我想使用,并且它们在GitHub上的安装说明都说要使用Swift软件包管理器,只需将它们添加到软件包清单文件中即可。

但是我不知道如何在Xcode中实现这一点。我只需要在项目根目录中创建一个“package.swift”文件吗?这样做然后运行项目似乎不起作用,因为所需的软件包似乎没有被添加到我的项目中。

我是否做错了什么?


你正在尝试安装哪些软件包? - Do2
具体来说,https://github.com/onevcat/Rainbow - Garry Pettet
通过CocoaPods安装它!请参阅CocoaPods网站的安装指南。 - Do2
3
@Do2 这个问题显然是关于Swift包的。在评论中告诉别人使用其他东西并不是有帮助的回答。 - Joshua Nozzi
2个回答

42

Xcode和SPM可以一起使用,但据我所知,您需要在命令行上执行一步操作。

将您的软件包清单文件放入与Xcode项目相同的目录中,然后调用swift package generate-xcodeproj

软件包管理器将下载您的依赖项并重写.xcodeproj文件以引用它们。

将会保留任何现有的源代码,但目录结构将被重新配置为SPM的首选布局:

PROJECT_DIR
├── Sources
│   └── ProjectName
│       ├── YourCode.swift
│       └── YourOtherCode.swift
├── Dependencies
│   └── SomeDependency
│       ├── DependencyCode.swift
│       └── OtherDependencyCode.swift
└── Package.swift

注意,我在实际项目中并没有对此进行全面测试;鉴于 SPM 文档仍处于“工作中”状态,请确保您已经做了最近的提交。


谢谢。非常有效。对于安全建议加一分! - Garry Pettet
有没有办法强制SPM不更改.xcodeproj文件内部的目录结构?我并不太在意我的所有文件是否都在Sources文件夹中,但是我在导航器中还有指向Sources文件夹的分组,我希望它们保持完整。 - Rehat Kathuria
1
对于那些执行了这些步骤后遇到“未找到foo模块”的编译器错误的人,请注意。从9.2版本开始,Xcode为我提供了两个推荐的项目更改,其中之一是将Swift 3 @objc推断设置为默认值。执行这些更改后,我的目标可以识别外部依赖模块以进行导入。 - Pouria Almassi
感谢更新,@Airuop。我已有一段时间没有做过这个了;我已经制定了一个待办事项来尝试并确保答案没有漏掉任何其他东西。 - jscs

0
除了运行swift package generate-xcodeproj之外,我还需要在Xcode中构建我的项目,然后才能使用已安装的软件包。

完全有道理,因为软件包管理器下载软件包,然后要使用它们,您必须编译它们。 - zirinisp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接