File tree Expand file tree Collapse file tree 1 file changed +1
-1
lines changed
Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Original file line number Diff line number Diff line change @@ -29,7 +29,7 @@ Zig 构建系统巧妙地融合了这两者的优势,采用了一种**两阶
2929
3030在 Zig 中,build.zig 文件本质上是一个标准的 Zig 源代码文件,它包含一个公开的 build 函数。当用户运行 zig build 命令时,系统首先编译并执行这个 build.zig 文件 6。在这个阶段,开发者可以使用完整的 Zig 语言特性——包括 if 条件判断、for 循环、自定义函数、文件 I/O 操作等——来描述构建过程。这就是所谓的**命令式定义**。
3131
32- 然而,build 函数的执行并不会直接触发编译或链接操作。相反,build 函数中的 API 调用(如 b.addExecutable 或 b.addLibrary)实际上是在内存中构建一个**构建图**(Build Graph),即一个有向无环图(DAG) 7。例如,当代码中调用 const exe \= b.addExecutable(...) 时,它仅仅是在图中创建了一个代表编译任务的节点(Step),而没有立即调用编译器。
32+ 然而,build 函数的执行并不会直接触发编译或链接操作。相反,build 函数中的 API 调用(如 b.addExecutable 或 b.addLibrary)实际上是在内存中构建一个**构建图**(Build Graph),即一个有向无环图(DAG)7。例如,当代码中调用 const exe \= b.addExecutable(...) 时,它仅仅是在图中创建了一个代表编译任务的节点(Step),而没有立即调用编译器。
3333
3434当 build 函数执行完毕后,内存中就形成了一个完整的、静态的依赖关系图。随后的**执行阶段**则完全是声明式的:构建运行器(Build Runner)遍历这个 DAG,根据依赖关系决定执行顺序,并利用并发机制并行执行那些互不依赖的步骤 8。
3535
You can’t perform that action at this time.
0 commit comments