Zig | 使用zig版本管理器
版本管理器:
- 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
的命令,将对应版本下载到全局缓存中。
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 版本号不一样,比如形如:
这个版本号总是以
-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
来避免这个问题。
安装测试
下载解压后,添加到环境变量。
初始化项目
需要指定版本
\D
}
执行run