Zig | 使用zig版本管理器

Jul 13, 2025

Notion链接

版本管理器:

  • https://github.com/marler8997/anyzig
  • https://github.com/asdf-vm/asdf

由于asdf没有windows版本,所以这里使用anyzig

官方解释

一个通用的 Zig 可执行文件,允许你运行任何版本的 Zig。由于你的 PATH 中只能有一个 zig 可执行文件,anyzig 解决了只能使用一个版本的限制。调用的 Zig 版本是从 build.zig.zon 文件中的 minimum_zig_version 字段读取的。build.zig.zon 文件通过搜索当前目录或任意父目录来定位。

每当需要新的 Zig 版本时,anyzig 会调用等同于 zig fetch ZIG_DOWNLOAD_URL 的命令,将对应版本下载到全局缓存中。

$ zig 0.13.0 build-exe myproject.zig
$ zig 0.14.0-dev.3028+cdc9d65b0 build-exe mynewerproject.zig

anyzig 还添加了一些自定义命令,可以通过 zig any ... 查询和调用。

Mach 是一个游戏引擎,提供了一个镜像用于下载 Zig 编译器以及它自己“指定版本”(nominated versions)。https://machengine.org/docs/nominated-zig/

Mach 的版本格式不同(例如 2024.10.0-mach),且版本号总是以 -mach 结尾。因此,如果 anyzig 发现一个类似的版本号,它就会知道这是一个 Mach 版本,需要通过 Mach 的下载索引来解析成实际的下载 URL。

💡

Mach 是一个游戏引擎项目。它需要使用特定版本的 Zig 编译器来构建。

  • 为了方便使用,Mach 自己维护了一个专门的 Zig 编译器下载镜像(就是它提供的一个服务器,里面存放了很多 Zig 编译器版本供下载)。
  • 这些 Zig 编译器版本是 Mach 特别“指定”的版本,称为“nominated versions”(指定版本),它们可能和官方 Zig 编译器的普通版本不太一样。

Mach 版本的 Zig 编译器版本号格式和官方 Zig 版本号不一样,比如形如:

2024.10.0-mach

这个版本号总是以 -mach 结尾,这表示它是 Mach 专门做的版本,而不是 Zig 官方的普通版本。

anyzig 还会检查你 build.zig.zon 文件中的 .mach_zig_version = "..." 属性,并优先使用这个属性替代 .minimum_zig_version

使用 .mach_zig_version 替代 .minimum_zig_version 的原因是:未来 Zig 可能会对 minimum_zig_version 字段做一些验证,而使用 Mach 版本时,这个验证很可能会失败,因此用 .mach_zig_version 来避免这个问题。

安装测试

下载解压后,添加到环境变量。

初始化项目

需要指定版本

 zig 0.14.1 init
anyzig: appdata 'C:\Users\{username}\AppData\Local\anyzig'
anyzig: zig '0.14.1' already exists at 'C:\Users\{username}\AppData\Local\zig\p\N-V-__8AADFbwBIm9-O6Nm2fcNyYCR1DpSNvEl8Y_YOVvaHg'
info: created build.zig
info: created build.zig.zon
info: created src\main.zig
info: created src\root.zig
info: see `zig build --help` for a menu of options
anyzig: C:\Users\{username}\Desktop\zig-pro\build.zig

执行run

 zig run .\src\main.zig
anyzig: zig version '0.14.1' pulled from 'C:\Users\{username}\Desktop\zig-pro\build.zig.zon'
anyzig: appdata 'C:\Users\{username}\AppData\Local\anyzig'
anyzig: zig '0.14.1' already exists at 'C:\Users\{username}\AppData\Local\zig\p\N-V-__8AADFbwBIm9-O6Nm2fcNyYCR1DpSNvEl8Y_YOVvaHg'
All your codebase are belong to us.
Run `zig build test` to run the tests.
https://inasa.dev/posts/rss.xml