Skip to content

Latest commit

 

History

History
230 lines (163 loc) · 7.42 KB

2.2-Mac开发环境搭建.md

File metadata and controls

230 lines (163 loc) · 7.42 KB

2.2 Mac开发环境搭建

首先先检查自己的Mac电脑是否安装有Swift工具包

1.在终端运行

swift --version

若显示如下信息则表明已安装完成,如果你的电脑中安装有Xcode,Swift工具包会包含其中,目前Swift已发布最新版3.0,请注意您需要最新版本的Swift 3.0。如果低于3.0版本则Perfect是无法成功编译的。

Apple Swift version 3.0 (swiftlang-800.0.46.2 clang-800.0.38)
Target: x86_64-apple-macosx10.9

如果你的电脑中安装有多个版本的Xcode,因为Swift更新较为频繁,不同的Xcode版本对应的Swift版本一般也会不同,比如电脑中同时包含Xcode7.3和Xcode8,可以使用‘xcode-select’工具选择默认版本,具体指令如下,具体的Xcode名字以自己的为准

sudo xcode-select -switch /Applications/Xcode8.app/Contents/Developer

2.终端Swift使用初体验

使用swift指令,可以在终端边写边查看运行结果,类似Xcode的Playground功能。

swift指令可以将输入的Swift代码同步解析并运行。

在终端中输入如下指令,进入Swift代码编辑环境,代码换行使用Control+Enter组合键,结束编辑状态,使用Control+D组合键,清楚屏幕代码使用指令clear

swift

然后进入代码编辑环境

 1> let str = "hello swift"
str: String = "hello swift"
 2> func add(a: Int, b: Int) -> Int {
 3.    return a + b
 4. }
 5> add(a: 2, b: 3)
$R0: Int = 5

3.搭建Mac服务器环境

让我们先来编译Perfect提供的入门项目

执行以下命令能够克隆并编译一个空的入门项目。编译后可以启动一个本地的服务器,监听您计算机的8181端口:

git clone https://github.com/PerfectlySoft/PerfectTemplate.git
cd PerfectTemplate
swift build
.build/debug/PerfectTemplate

您应该可以在终端控制台中看到类似下面的内容:

Starting HTTP server on 0.0.0.0:8181 with document root ./webroot

服务器现在已经运行并等待连接。从浏览器打开http://localhost:8181/ 可以看到欢迎信息。在终端控制台中输入组合键“control-c”可以随时终止服务器运行。

完整的源代码请参考PerfectTemplate项目模板。

用Xcode来启动一个本地服务器

首先创建一个目录,来保存创建的工程项目,运行以下指令

mkdir FirstPerfectDemo

然后进入到该目录

cd FirstPerfectDemo

接下来介绍:Swift软件包管理器(SPM),它能够创建一个Xcode项目,并且能够运行PerfectTemplate模板服务器,还能为你的项目提供完全的源代码编辑和调试。在您的终端命令行内输入:

swift package generate-xcodeproj

然后打开产生的文件“FirstPerfectDemo.xcodeproj”,确定选择了可执行的目标文件,并选择在“我的Mac”运行。现在您可以运行并调试服务器了。

直接运行上述指令你可能会发现如下错误:

error:: no Package.swift found

提示我们需要一个名为Package.swift的文件,这个文件用来声明包的一些配置。然后我们按照提示创建一个如此的文件

touch Package.swift

打开刚刚创建的Package.swift文件,输入以下信息,注意name 要和自己的工程名一样

import PackageDescription

let package = Package(

	name: "FirstPerfectDemo",
	targets: [],
	dependencies: [
		.Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 2, minor: 0)
    ]
)

再次输入以下指令,就不会报错了。

swift package generate-xcodeproj

会输出以下信息

Cloning https://github.com/PerfectlySoft/Perfect-HTTPServer.git
HEAD is now at 3a535c4 Integer cast for Linux compilation
Resolved version: 2.0.3
Cloning https://github.com/PerfectlySoft/Perfect-HTTP.git
HEAD is now at 6f7f065 Merge pull request #7 from diejmon/master
Resolved version: 2.0.4
Cloning https://github.com/PerfectlySoft/PerfectLib.git
HEAD is now at dd2e981 Added utf8 decoder variant
Resolved version: 2.0.1
Cloning https://github.com/PerfectlySoft/Perfect-Net.git
HEAD is now at a6a8e29 Fixed up thread callbacks for OpenSSL
Resolved version: 2.0.2
Cloning https://github.com/PerfectlySoft/Perfect-COpenSSL.git
HEAD is now at ac74763 Added hmac.h
Resolved version: 2.0.1
Cloning https://github.com/PerfectlySoft/Perfect-Thread.git
HEAD is now at 297f976 Added autoreleasepool to ThreadQueues for macOS; fixed swift 3.0.1 compilation warning
Resolved version: 2.0.3
warning: root package 'HelloPerfect' does not contain any sources
generated: ./FirstPerfectDemo.xcodeproj

不久你可以看到这些资源被下载到你工程根目录的 Packages 目录下,Packages 目录包含了被复制的包依赖的所有仓库。这样将使你能修改源代码并直接推送这些修改到他们的源,而不需要再对每个包在单独进行复制。

可以看到warning提示我们需要包含一个sources文件夹,没有的话,会编译失败。

mkdir Sources
cd Sources
touch main.swift

接下来尝试运行,会看到此时正在编译Perfect的相关文件。

swift build

可能会报告以下错误描述信息

/Users/weiwang/FirstPerfectDemo/Sources/main.swift:32:1: error: use of unresolved identifier 'configureServer'
configureServer(server)
^~~~~~~~~~~~~~~
<unknown>:0: error: build had 1 command failures
error: exit(1): /Applications/Xcode8.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Users/weiwang/FirstPerfectDemo/.build/debug.yaml

原因是由于我们在main.swift中写入了如下代码

configureServer(server)

所有要包含这个函数的文件,这个文件在PerfectTemplate模板示例中的Sources/文件下,拷贝arguments.swift文件到你的对应目录即可

接下来再次尝试执行swift编译指令

swift build

如果输入以下信息,则表明编译通过

Compile Swift Module 'PerfectThread' (2 sources)
Compile Swift Module 'PerfectLib' (10 sources)
Compile Swift Module 'PerfectNet' (5 sources)
Compile Swift Module 'PerfectHTTP' (9 sources)
Compile CHTTPParser http_parser.c
Linking CHTTPParser
Compile Swift Module 'PerfectHTTPServer' (5 sources)
Compile Swift Module 'FirstPerfectDemo' (2 sources)
Linking ./.build/debug/FirstPerfectDemo

再次重新运行,注意,执行完swift build指令以后,要重新生成.xcodeproj文件

swift package generate-xcodeproj

然后用Xcode打开我们刚刚生成的FirstPerfectDemo.xcodeproj

选择我们的项目,并且选择运行至My Mac平台下,如果报以下错误

ld: library not found for -lCOpenSSL for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

点击工程项目FirstPerfectDemo,选择PROJECT下的工程项目,点击 Build Settings 搜索关键字 search ,找到 Library Search Paths 点击添加 $(PROJECT_DIR) 并选择 recursive ,表示会递归查找工程文件。

再次运行,如果看到控制台输入以下信息,则表示运行成功

[INFO] Starting HTTP server on 0.0.0.0:8181 with document root ./webroot

接下来打开浏览器输入http://127.0.0.1:8181/,就能看到我们编写的HTML代码Hello, world!了,到此,Mac 下的开发环境就配置完成了。