ZOC nasce do Zig.
O ZOC é o Zig em versão Lite, focada exclusivamente no compilador C/C++:
zoc cczoc c++
Não é um wrapper externo separado. O binário final é standalone (single-file), com zoc-real (Zig real) e lib embutidos.
Criar um compilador single-file standalone, out-of-the-box, com cross-compilação multiplataforma, permitindo ter um único binário para compilar para os principais sistemas operacionais sem baixar nada extra.
- compila C e C++ com a interface
ccec++; - preserva o modelo de triplet do Clang (
<arch>-<vendor>-<sys>-<abi>); - mantém compatibilidade com flags e modos de
zig ccezig c++; - distribui binário único com toolchain embutida;
- na matrix, cada binário embute o Zig do próprio target (evita erro
InvalidExepor payload incompatível).
Com um binário do ZOC já pronto:
(cd zoc && ./dist/zoc cc hello.c -o hello)
(cd zoc && ./dist/zoc c++ hello.cpp -o hello_cpp)Se você está usando artefatos da matrix:
(cd zoc && ./dist/zoc cc hello.c -o hello)
(cd zoc && ./dist/zoc c++ hello.cpp -o hello_cpp)zoc --helpmostra o uso do ZOC e linhas de usage dezig cc/zig c++embutidas;zoc cc --helpmostra o help completo do modo C;zoc c++ --helpmostra o help completo do modo C++.
Comandos aceitos:
ccc++
(cd zoc && ./dist/zoc cc -target x86_64-windows-gnu hello.c -o hello.exe)
(cd zoc && ./dist/zoc c++ -target aarch64-linux-musl hello.cpp -o hello_aarch64)Sistemas:
linuxmacoswindows
Arquiteturas:
i386amd64arm64arm6arm7arm8aarch64
Targets da matrix:
linux-x86_64linux-x86linux-armv6linux-armv7linux-armv8linux-aarch64macos-x86_64macos-aarch64windows-x86windows-amd64windows-aarch64
O tutorial completo de build foi movido para:
- Andrew Kelley (criador do Zig): https://andrewkelley.me/