curl查看swift状态命令_Ubuntu上玩玩Swift——安装,调试,VScode配置

cfda642a2a98e7457cd687935770ad5f.png

2018年苹果开源了自己的编程语言Swift,更厉害的是谷歌深度学习框架Tensorflow开始做Swift的接口了,这让我似乎看到了Swift的光明前景。别的不说,单就MacOS和iOS上部署深度学习模型,就让我很期待了。之前的深度学习模型可以采用苹果出的SDK,但是模型有限,很难满足各种需求,要将自己开发的深度学习模型放在MacOS和iOS上,需要用C/C++开发,然后混合编译。现在Swift Tensorflow还在开源社区发展阶段,不适合机器学习玩家。相信在不久的将来,我们在MacOS和iOS上开发就只需要Swift一种语言就可以了,一颗赛艇……

1. 安装Swift

废话少说,先安装,我的平台是Ubuntu 18.04,安装Swift的版本是5.2.5。我平时是做深度学习算法的,现在在Ubuntu 18.04上面安装的是tensorflow 2.3.0,cuda 10.1。

第一步,下载Swift 5.2.5的压缩包。

https://swift.org/download/​swift.org

第二步,安装依赖库。虽然这里需要gcc-5,python2.7,但我的是gcc-7.5.0, python 3.7,也没啥问题。

apt-get 

第三步,把解压的Swift拷贝到/usr下。或者在.bashrc里输出一下Swift压缩包的路径到PATH变量。

第四步,测试一下,新建一个hello.swift,输入以下代码。

print

然后直接可以在命令行里运行swift hello.swift,或者把它编译成可执行文件swiftc -o hello hello.swift。

2. VScode

VScode是微软开源的一个代码编辑器,是一个很好用的IDE。现在,我们把它改造成一个swift的IDE.

第一步,安装npm和Node.js。下载node.js 12.18.3,解压后,cp到/usr目录下。这可以覆盖原有的npm和node。

第二步,安装VScode。官网下载.deb文件,sudo dpkg -i XXXX.deb即可。

第三步,在github上下载sourcekit-lsp-master源代码,并解压。

https://github.com/apple/sourcekit-lsp​github.com

第四步,进入sourcekit-lsp-master/Editors/vscode目录下,命令行输入

npm run createDevPackage

搞到一半会报错

Fetching vscode.d.ts from: https://raw.githubusercontent.com/Microsoft/vscode/431ef9da3cf88a7e164f9d33bf62695e07c6c2a9/src/vs/vscode.d.ts
Error installing vscode.d.ts: Error: connect ECONNREFUSED 0.0.0.0:443

原因是vscode的网址不是这个了。这时候,我们打开sourcekit-lsp-master/Editors/vscode/node_modules/vscode/bin/install文件。将其中三处vscode.d.ts结尾的url地址,改为

https://github.com/microsoft/vscode/tree/master/src

将package.json的url改为

https://github.com/microsoft/vscode/package.json

然后重新运行

npm run createDevPackage

如果下载不了vscode.d.ts,可以私信向我要。

运行结束后,会在sourcekit-lsp-master/Editors/vscode/out下生成vscode extension的文件,在命令行输入:

code --install-extension out/sourcekit-lsp-vscode-dev.vsix

搞定啦,赶紧在vscode里import Foundation试试自动补全吧。

3. Debug

3.1 命令行调试。

在ubuntu上面debug swift,需要lldb,这个工具是随着swift Ubuntu发行文件一起发行的,所以如果你安装了swift就已经安装了lldb。我们写一个文件main.swift,在命令行里调试一个试试。

var 

在命令行输入

swiftc -g -o main main.swift

和gcc用法是不是很像?然后输入

lldb main

就开始调试了。先输入l看一下,附近周围的代码。

86b2c41a28795f4f2fce164f559a62ea.png

在第三行设个断点

b 3

然后输入r运行至断点,输入

p a

查看变量a的值。然后输入c,继续运行至下一段点,因为我们就一个断点,所以就把程序运行完了。输入q退出。当然你也可以输入命令全称run(r), continue(c), list(l), breakpoint(b), print(p), quit(q)。是不是和gdb类似?

除了编辑单个文件,我们还可以编译Package,在你想创建Package的目录下打开命令行,输入

swift package init --type executable

然后就会生成一个模板Package,在Source/swift下生成了一个main.swift的hello world文件。我们在Package的根目录下,输入

swift build

就编译了整个Package,然后生成一个./.build/debug/swift的可执行文件。可以使用lldb ./.build/debug/swift进行调试,也可以使用swift run直接运行。

3.2 VScode中调试。

说一千道一万,命令行调试肯定不如IDE里调试方便。我们进一步改造VScode,让它可以调试swift代码。首先,要安装CodeLLDB这个插件,直接在extension商店里搜索即可。CodeLLDB自带了一个lldb,只能用来调试C/C++程序,我们要把它设置成swift自带的lldb。在extension里找到CodeLLDB,然后点击齿轮按钮,在设置里有个lldb:library。

e0f46aee82251aad3b2ff795952cdaa2.png

在这个对话框里输入/usr/lib/liblldb.so。如果你把swift没有安装在/根目录下,做相应修改即可。

然后我们需要在项目根目录下创建.vscode文件夹,在.vscode里面新建两个json文件,分别叫launch.json和tasks.json.

730525541f8b5650bf3520cfb0b1c227.png

在launch.json里输入

{
 

在tasks.json中输入

{
    

同理,如果我们没有创建Package,只是想编译单个文件,只需要把launch.json中的"program"改成"${fileDirname}/${fileBasenameNoExtension}". ${fileDirname}就是编译文件的目录。${fileBasenameNoExtension}就是要编译的文件无扩展名的文件。例如main.swift的${fileBasenameNoExtension}就是main。

然后把task里面的command换成swiftc,在后面加上一个"args"参数

"args"

这样,我们在VScode执行Debug,就先会运行tasks.json指定的任务

swiftc -g main.swift -o ./main

随后会执行lauch.json中的任务

lldb main

然后我们就可以在VScode里调试啦。

09224ac96085e45297e7b7ac87ce77ed.png

可以在左侧的WATCH里观察变量,下方的DEBUG CONSOLE依然可以使用lldb命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值