Cuando trabajas con Zig, tu proceso de compilación suele gestionarse a través de un archivo llamado build.zig. Este archivo permite a los desarrolladores exponer opciones que pueden activarse o configurarse en tiempo de compilación, sin necesidad de modificar el código fuente. Estas opciones se conocen como Build User Options y ofrecen una manera flexible de personalizar la construcción de un proyecto.
Definición de Build User Options en build.zig
Las opciones de usuario se definen dentro de build.zig mediante el método option del objeto Build. El método recibe tres argumentos:
type: El tipo de dato que representa la opción (bool,u32,[]const u8, etc.).name: La cadena que identifica la opción en la línea de comandos (ejemplo:"debug").description: Una breve descripción que aparece en la ayuda automátic.
El valor devuelto por option es la configuración actual, con el valor por defecto que se establece si el usuario no la sobreescribe.
const std = @import("std");
// Función principal de construcción
pub fn build(b: *std.Build) void {
// Declaración de una opción booleana llamada "debug"
// Por defecto será false (desactivado)
const debug = b.option(bool, "debug", "Habilita la salida de depuración en el binario");
// Crear un ejecutable llamado "app"
const exe = b.addExecutable("app", "src/main.zig");
// Si la opción debug está activada, añadimos la configuración de depuración
if (debug) {
// -O0 indica sin optimizaciones; útil para depurar
exe.setBuildMode(.Debug);
} else {
// En caso contrario, compilamos en modo ReleaseFast para producción
exe.setBuildMode(.ReleaseFast);
}
// Compilar la fuente y generar el binario
exe.install();
}
En el fragmento anterior, la línea const debug = b.option(bool, "debug", "Habilita la salida de depuración en el binario"); crea una opción que el usuario puede
