Zig (二)VSCode或Clion的Zig开发环境配置


【书接上回】

Zig 裸机开发GD32F470 (一)引言

(书友反馈多些干货,遂脱水缩合。趣导之而水,码导之而涩。码趣之道难衡,始知“叩其两端而执其中”。编写时间、水平有限,挂一漏万,恳读者批评之。是为序。)

三、配置开发环境

1. 编译原理

程序猿马骝阿豪继续捣鼓怎么用Zig写程序。

编程,就是将人话告诉计算机,让他给我们干活。这个人话写在叫源代码的文件里面。把人话翻译为机话的过程就叫做编译。翻译的那个工具就叫编译器

​按照C语言的套路,如果在Windows平台下编程,得先下载一个Cygwin或者MinGW配置一个GCC编译器,并且按照教程下载、安装、配置环境变量。

这个过程比较麻烦,阿豪在学习中总结了VSCode如何配置C/C++编程环境一文

这种方法网上参考配置文章很多,也很好用。缺点是GCC版本一般会落后最新版本很多,如果要在Windows中使用最新的GCC,可以用微软的MSVC编译器

“那Zig语言怎么配置编译器呢?” 阿豪的同学阿涛此刻问道。他也想看看Zig语言怎么玩。

“那得首先略探一二程序的编译流程。上图~”

Zig语言使用LLVM编译器进行编译。LLVM翻译Zig代码的流程,与C类比,先将main.zig翻译为LLVM IR这个中间代码,然后再将中间代码翻译为特定指令集的汇编,然后由链接器LLD链接后形成可执行文件。这个过程到底生成的东西是什么,可以参考我用LLVM手动编译C语言的LoongArch32-ELF程序的过程。

阿涛摇摇脑袋说道:“这个东西,我知道他的原理也没啥用啊。废话少说,我想先写个代码看看。”

阿豪觉得甚是此理。作下文以记之。

2. 用Scoop配置Zig

参考官方文档的GetStart。官方文档是最值得看的,其次是系统性的教程,例如Zig中文教程,有各种平台的配置Zig环境的教程。
以Windows环境为例,在终端运行以下指令:

2.1. 安装scoop

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

2.2. 安装Zig各个版本

使用Scoop可以安装测试版和main版本。目前装main版本。

scoop bucket add main
scoop install main/zig

安装测试版

scoop bucket add versions
scoop install versions/zig-dev

两个版本能相互切换:从zig到zig-dev

scoop reset zig-dev

或者切换回zig

scoop reset zig

2.3. Zig环境测试

在终端输入zig version ,若输出0.13.0或者更新版本号,则安装Zig编译器成功。

3. 参考项目

4. Windows下VSCode配置

可参考大佬的文章配置zig + vscode 配置 debug 断点调试 · zigcc · Discussion #9 (github.com),很详细。下面按照有基础编程经验的读者简要叙述,如有某一点不懂,可用关键词检索学习相关配置方法,这里不再赘述。

4.1. ZLS配置

zigtools/zls (github.com)是非官方的语言服务器协议实现,人话就是实现在编辑器给代码加高亮、转跳等功能的软件。必装。下载zls-x86_64-windows.zip到一个地方解压。
同时给zls路径配置环境变量。

4.2. Zig插件安装

Zig Language插件。
装完点拓展配置:

选择Zig Language Server。
配置好Zig Path,用Scoop的填zig即可。用官网下二进制文件安装就要填zig.exe所在目录。
拉到差不多最后的Zls: Path,配置好zls的环境变量后填zls即可。

4.3. 字符编码

Zig使用UTF-8输出,Windows终端默认输出GBK。使用chcp 65001临时修改终端字符集可以。也可修改全局为UTF-8,不过这是一个beta特性。而且可能会影响其他应用工作。

最终极的解决方案是在WSL2这个Linux子系统上编译运行Zig程序,能输出中文。WSL2安装Zig的流程与Windows一致,使用包管理工具下载Zig后,配置环境变量;下载ZLS后配置环境变量。然后在VSCode插件上配置Zig和ZLS的路径即可。缺点是方法过于繁琐。用下文的Clion写Zig也可以输出中文。

4.4. VSCode调试Zig-支持中文

方案一:用cppvsdbg
在 Windows 版 VS Code 中调试 Zig 代码 - 知乎 (zhihu.com)
在 VS Code 中安装 C/C++ ( ms-vscode.cpptools ) 、 ZLS for VSCode ( augusterame.zls-vscode ) 扩展。

在项目的.vscode\launch.json文件中添加以下内容:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "cppvsdbg",
            "request": "launch",
            "name": "(Windows) Debug test runner|cppvsdbg",
            "program": "${workspaceFolder}\\zig-out\\bin\\hello.exe",
            "cwd": "${workspaceFolder}\\zig-out\\bin",
            "symbolSearchPath": "${workspaceFolder}\\zig-out\\bin",

            "environment": [],
            // "externalConsole": false,
            "logging": {
                "moduleLoad": false
            },
            "preLaunchTask": "build",
        }
    ]
}

还要在tasks.json文件添加构建参数

{
    "version": "2.0.0",
    "tasks":[
        {
            "label": "build",
            "type": "shell",
            "command": "zig",
            "args": [
                "build",
                "-Doptimize=Debug",      // 不能裸机调试用,可用Windows的Zig程序调试
                // "-Doptimize=ReleaseSafe",   // 调试可用、可运行、编译器安全优化
                // "-Doptimize=ReleaseFast",      // 调试可用、可运行
                // "-Doptimize=ReleaseSmall",  // 最小包,不可调试,可运行、不进行安全优化

            ],
        }
    ]
}

同时为了在Windows下调试并且输出中文,需要设置settings.json文件,将终端的编码换成UTF-8:

{
	"zig.path": "zig",
    "zig.zls.globalCachePath": "",
    "zig.zls.path": "zls",
    "terminal.integrated.profiles.windows": {
        // 配置cmd
        "cmd": {
            "path": "cmd.exe",
            "icon": "terminal-cmd",
            "args": ["/K chcp 65001 >nul"]
        },
        "PowerShell": {
            "source": "PowerShell",
            "icon": "terminal-powershell",
            "args": ["chcp 65001", ";", "powershell", "-NoLogo"],
        },
        "Command Prompt": {
            "path": [
                "${env:windir}\\Sysnative\\cmd.exe",
                "${env:windir}\\System32\\cmd.exe"
            ],
            "args": [],
            "icon": "terminal-cmd"
        },
    },
    "terminal.integrated.defaultProfile.windows": "PowerShell",
}

这种是用cppvsdbg进行调试。有个问题就是全局变量、常量看不到。
image.png

还有用lldb调试的:需要先安装Windows环境下的LLVM MinGW-w64包,LLVM自带LLDB。然后再VSCode安装CodeLLDB。如果断点不可用,检查计算机中的LLVM MinGW-w64是否是最新的。环境变量中的工具链会有影响。参考这篇文章进行修改。
这种方法比较麻烦,不如用cppvsdbg。

5. Clion配置Zig开发环境

按照上文下载好Zig和ZLS后,Clion需要配置的东西很少就能使用。

5.1. 配置插件ZigBrains


如果遇到connect Rest,把梯子全局代理开启。

6. Clion编写Zig程序测试

6.1. Zig编译运行流程

zig init初始化项目——>zig build run 编译运行项目。

6.2. 初始化Zig项目:zig init


会出现问题:项目文件都“正在加载”???

因为标准库的路径不对。

解决方案:更新插件,Zig和ZLS的路径都点一下“自动探测”:
image.png

修改完重新重磁盘加载项目,就能看到文件:

6.3. 编译运行:zig build run

在Clion右侧点击Reload Zig Build Setps,能刷新出来编译选项。

点击run或者test就能运行程序。
image.png

运行单个测试:
image.png

6.4. 调试

点运行旁边的绿色小虫子就能断点调试。
image.png
Clion运行支持输出中文,而调试不支持输出中文,暂时没找到方案。期待大佬的方案。
image.png

6.5. 更换调试器*(可选)

image.png
在设置中选,目前机器测试,默认的MSVC能用,GDB和LLDB会进入不了断点。原因未知。

6.6. 更换主题*

个人嫌弃Clion默认的深色字体不好看,于是下载visual studio dark plus theme插件后就拥有了五彩斑斓的Zig代码,和VSCode风格一致,对眼睛舒服多了。
image.png

7. 小结

本章介绍VSCode和Clion两种不同IDE上用Zig进行编程的方法,方便新手入门。同时应该意识到IDE只是编程的工具,本质是代码文件经过编译、链接后生成了可执行文件运行。IDE只是帮助玩家省略这背后的操作,而不应该不懂背后的编译原理。
而且,配置环境的目的是写程序,慎本末倒置,环境折腾了一大堆,Zig程序屁没放出来一个(是我没错了哈哈哈)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值