在build.zig可以看到下面的编译时运行代码
comptime {
buildpkg.requireZig("0.14.0");
}光从代码上就可以很明显认识到,用于检查当前环境的zig版本是否满足指定的版本
const std = @import("std");
const builtin = @import("builtin");
pub fn requireZig(comptime required_zig: []const u8) void {
// builtin是zig编译器在编译时自动提供的,用于获取编译时信息。比如这里的zig版本号
const current_vsn = builtin.zig_version;
// 使用标准库从字符串中解析出zig版本语义
const required_vsn = std.SemanticVersion.parse(required_zig) catch unreachable;
// 确保major, minor版本一致,否则要抛出编译时错误
if (current_vsn.major != required_vsn.major or
current_vsn.minor != required_vsn.minor)
{
@compileError(std.fmt.comptimePrint(
"Your Zig version v{} does not meet the required build version of v{}",
.{ current_vsn, required_vsn },
));
}
}通过上面的代码,使用zig进行构建的时候会做版本检查,不通过直接编译报错。