由于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。

<aside> 💡

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

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

2024.10.0-mach

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

</aside>

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