Zig — це гарна мова програмування з чудовою системою збірки та зручним замінником компілятора для C/C++.
Згенеровано за допомогою DALL-E.
Привіт, система збірки Zig
Пам'ятайте, що я використовую останню нестабільну версію Zig, тому це може не працювати у вас.
Використовувати її досить просто. Я створю два файли для початкової настройки: файл build.zig
та файл main.c
.
const std = @import("std");
pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
const mode = b.standardOptimizeOption(.{});
const module = b.addModule("main", .{
.target = target,
.optimize = mode,
.link_libc = true,
});
module.addCSourceFile(.{
.file = b.path("main.c"),
.flags = &[_][]const u8{"-std=c11"},
});
const exe = b.addExecutable(.{
.name = "hello",
.root_module = module,
});
b.installArtifact(exe);
}
#include
int main() {
printf("Hello from Zig Build System");
return 0;
}
Все, що нам потрібно зробити, це виконати наступну команду в терміналі.
zig build
Ця команда скомпілює файл main.c
і з’єднає його для створення виконуваного файлу hello
. Ви знайдете його в папці zig-out/bin
, яка знаходиться в вашій поточній робочій директорії. Якщо ви запустите виконуваний файл за допомогою команди ./zig-out/bin/hello
, він виведе наступний рядок, який є саме тим, що ми очікували.
Hello from Zig Build System!
Запуск з Zig
Ми можемо використовувати команду zig build run
, щоб скомпілювати і запустити виконуваний файл в один прохід. Все, що нам потрібно зробити, це додати наступні рядки в функцію build
у файлі build.zig
.
const run_cmd = b.addRunArtifact(exe);
run_cmd.step.dependOn(b.getInstallStep());
if (b.args) |args| {
run_cmd.addArgs(args);
}
const run_step = b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step);
Нові рядки в системі збірки інструктують її додавати команду запуску, яка залежить від попереднього етапу встановлення. Це має сенс, тому що ми не можемо запустити програму без виконуваного файлу. Далі перевіряється, чи є передані параметри командного рядка до системи збірки Zig, і додаються до команди запуску. Нарешті, ми дозволяємо команді запуску бути виконаною, додаючи її як етап запуску.
Наприклад, якщо наша програма вимагає передачі параметрів командного рядка під час її запуску, то команда збірки Zig виглядатиме так:
zig build run -- arg1 arg2 arg3
Оскільки наша програма "Hello, World!" не потребує параметрів командного рядка, ми можемо їх пропустити. Виконання команди zig build run
дасть той самий результат, що й раніше.
Hello from Zig Build System!
Висновок
Ми можемо використовувати систему збірки Zig разом з її замінником компілятора для C для наших C-проєктів, над якими ми хочемо працювати і підтримувати їх у 2025 році та в майбутньому. Ми почали з базової програми "hello world", і я впевнений, що поділюся більше, оскільки буду досліджувати інші корисні функції системи збірки Zig.
Перекладено з: Using Zig’s Build System for C/C++ Projects in 2025