如何在现有macOS项目中使用Swift Package Manager?

前端之家收集整理的这篇文章主要介绍了如何在现有macOS项目中使用Swift Package Manager?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在使用Cocoapods来管理我的Swift项目的依赖项。我遇到了 this package,而Cocoapods没有列出。相反,它建议使用Swift Package Manager。但是,每当我尝试使用Swift Package Manager基本上做任何事情时,它最终会完全破坏我的整个项目。

因此,为了弄清楚如何实际使用Swift Package Manager,我正在测试项目中使用它。

这是我尝试过的:

>从Xcode创建一个新项目

File -> New -> Project -> Cocoa App

Product Name: basic-ssh-test

这会创建一个基本应用程序,当我点击“运行”时加载一个空白窗口。为了好玩,我在我的AppDelegate中的applicationDidFinishLaunching函数添加了print(“test”),因此当我运行程序时,调试窗口会显示“test”。

现在我想将Shout包添加为依赖项。

> swift包init –type可执行文件

这将创建以下文件

Creating executable package: basic-ssh-test
Creating Package.swift
Creating README.md
Creating .gitignore
Creating Sources/
Creating Sources/basic-ssh-test/main.swift
Creating Tests/

现在我要将“Shout”依赖项添加到我的新Package.swift文件中:

// swift-tools-version:4.0
import PackageDescription

let package = Package(
    name: "basic-ssh-test",dependencies: [
        .package(url: "https://github.com/jakeheis/Shout",from: "0.2.0")
    ],targets: [
        .target(
            name: "basic-ssh-test",dependencies: ["Shout"]),]
)

我会介入依赖项:

> swift包解析

这导致依赖项被拉入.build目录:

Fetching https://github.com/jakeheis/Shout
Fetching https://github.com/jakeheis/CSSH
Fetching https://github.com/IBM-Swift/BlueSocket
Cloning https://github.com/IBM-Swift/BlueSocket
Resolving https://github.com/IBM-Swift/BlueSocket at 0.12.91
Cloning https://github.com/jakeheis/CSSH
Resolving https://github.com/jakeheis/CSSH at 1.0.3
Cloning https://github.com/jakeheis/Shout
Resolving https://github.com/jakeheis/Shout at 0.3.0

现在我重新生成xcodeproj文件

> swift包generate-xcodeproj

现在,当我打开xcodeproj文件时,有一个名为Sources的新组,其中有一个目录basic-ssh-test,其中有一个swift文件,其中main.swift带有print(“Hello,world!”)。

我实际感兴趣的代码现在位于名为basic-ssh-test的蓝色文件夹中。所有必要的文件仍在那里,但Xcode运行的是main.swift文件,而不是运行我的应用程序。我可以说,因为调试输出是“Hello,world!”而不是“测试”。

我已经阅读了几个教程,声称Swift Package Manager将移动我的源文件并继续像以前一样构建,但事实并非如此。

我的构建设置中也不再有“主界面”选项,因此我无法选择“MainMenu.xib”作为我的应用程序起点。

这与我尝试在现有项目中使用Swift项目管理器时发生的情况基本相同。它引入了依赖项,但它基本上忽略了我的整个现有项目,只运行“hello world”代码

如何使用Swift Package Manager在不忽略现有代码库的情况下向现有项目添加依赖项?

我认为SPM只与Mac命令行可执行文件或库兼容。 This明确指出SPM根本不支持iOS,watchOS或tvOS平台。但是,由于macOS AppKit / Cocoa应用程序目标非常类似于iOS或tvOS Xcode目标,我想这句话暗示SPM不能与开箱即用的macOS Cocoa应用程序一起使用,这就是我认为你的希望。

看起来有关于如何将其与iOS应用程序目标一起使用的some work here,这应该主要转换为macOS Cocoa目标。

猜你在找的Swift相关文章