build.zig, a Zig source file that defines how your project is built. Unlike traditional build systems that use declarative configuration files, build.zig is executable Zig code that provides full programmatic control over the build process.
Overview
The build system is centered around thestd.Build API, which provides a rich set of functions for creating executables, libraries, tests, and managing dependencies. Every build.zig file exports a public build function that receives a *std.Build parameter.
Basic Structure
Standard Options
Target Options
ThestandardTargetOptions function allows users to specify the target platform from the command line:
Optimize Options
ThestandardOptimizeOption controls optimization mode:
Debug- No optimizations, safety checks enabledReleaseSafe- Optimizations + safety checksReleaseFast- Optimizations, no safety checksReleaseSmall- Size optimizations
Custom Build Options
Define custom build options usingb.option():
Using Build Options in Code
Create an options module to expose build-time values to your code:Creating Build Artifacts
Executables
Static Libraries
Dynamic Libraries
Object Files
Test Executables
Build Steps
Steps define actions in the build process. Create custom build steps:Running Commands
Module Configuration
Configure module properties:Linking Libraries
System Libraries
Object Files
C Source Files
Installing Files
Install Artifacts
Install Files
Install Directories
Advanced Examples
Conditional Compilation
Version String Generation
lib/std/Build.zig:245-302
Platform-Specific Configuration
Reference
Keystd.Build functions:
path()- Create a path relative to build rootpathJoin()- Join path componentsfmt()- Format a stringdupe()- Duplicate a stringallocator- Access the build allocatorgetInstallStep()- Get the default install stepstep()- Create a named build step