Swift Package Manager 结合 Xcode 实践初探

前言

Swift Package Manager 是苹果推出的用于管理分发 swift 代码的工具。类似于 CocoPod。它使用 swift 编译系统 自动的下载源码、编译、链接程序,可以创建使用swift的库和可执行程序等。
以前,看过官网,但再次回头看,还是没印象,这次就一步一步的实际操作一下。

创建一个新的目录

$ mkdir Hello
$ cd Hello
类似pod 都有一个Podfile。SPM 都有一个 Package.swift 文件。同样 SPM 也提供了命令行帮我们做了这工作。
swift package init -h
OVERVIEW: Initialize a new package
OPTIONS:
  --type   empty|library|executable|system-module

看帮助文档可以知道package有多种类型,这里,我想做一个命令行工具。所有选择 executable

swift package init executable

至此一个最简单的可以 命令行 工具就做好了

编译就可以产生可执行文件了。 到文件目录中看一看一切都很清楚明了

//编译命令:
swift build
//运行命令:
swift run 

注意都是在当前Hello目录下

结合 Xcode 写代码

code 还是要在 Xcode 中执行,可是浏览目录发现没有 xcode 工程文件。很简单运行下面命令即可。

swift package generate-xcodeproj
//查看更多命令
// swift package -h

至此就可以在 xcode 中愉快地写代码了

添加依赖

开发 ios 的都知道,引入第三方库都需要配置 xcode。 SPM 帮助我们完成了这些工作。比如:这里,我想让自己的控制台日志成为彩色的。引入 第三方库 Rainbow (链接里有详细的使用方法),修改后的 Package.swift 文件夹如下:

// swift-tools-version:4.2
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "Hello",
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
        .package(url: "https://github.com/onevcat/Rainbow.git", from: "3.1.1"),

    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages which this package depends on.
        .target(
            name: "Hello",
            dependencies: ["Rainbow"]),
        .testTarget(
            name: "HelloTests",
            dependencies: ["Hello"]),
    ]
)

使用第三方库

在 main.swift 中

import Rainbow
print("Red text".red) 

至此,可以用命令行run 或者用 xcode 运行。
你会发现编译失败!!!

犹如CocoPod,编写完配置文件,需要执行配置文件,在控制台执行

swift package generate-xcodeproj

OK!!!

获取命令行参数 CommandLine.arguments

补充

一开始总是不知道怎么写 Package 文件,后来发现,这个 Package 就是一个 swift 类 和 普通的 UIView 类似。这个文件大部分类容就是调用 init 方法。知道这个一切都清楚了。当然这个文件的写法也有一些规则,看这里官方blog:Swift Package Manager Manifest API Redesign

总结

一次简单实践完成,但还有不少细节和帮助文档可以细细挖掘。目前,SPM 还不支持 ios 。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 229,406评论 6 538
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,034评论 3 423
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 177,413评论 0 382
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,449评论 1 316
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,165评论 6 410
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,559评论 1 325
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,606评论 3 444
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,781评论 0 289
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,327评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,084评论 3 356
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,278评论 1 371
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,849评论 5 362
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,495评论 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,927评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,172评论 1 291
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,010评论 3 396
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,241评论 2 375

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,156评论 4 61
  • iPhone滑动关闭页面是一个非常讨喜的设计。滑动关闭可以让你聚焦屏幕内容,而不需要因为返回突然切换思维到屏幕下方...
    欧阳锋阅读 1,903评论 0 4
  • 腊月初四大寒日, 二十四节至此完。 闲来摘梅雪白时, 谁见发白镜中盘!
    古来古来阅读 122评论 0 4
  • 看来,我的本质还是勤奋的,太闲会让我感受不到自己的价值。 来这里上班的前一个月,我感觉自己有的时候真的闲得发慌,天...
    拙玉需琢阅读 291评论 1 2