https://img.shields.io/pypi/v/zigcc
A util script that aims to ease use zig cc
to compile C/C++/Rust/Go programs.
In most cases, we can use following command to use Zig for compile
CC='zig cc' CXX='zig c++' ...
However in real world, there are many issues this way, such as:
- zig cc: parse -target and -mcpu/-march/-mtune flags according to clang #4911
- Targets compare: Rust to Zig
- unsupported linker arg
- Rust + `zig cc` CRT conflict. : rust
So this project was born, it will
- Convert target between Zig and Rust/Go
- Ignore link args when
zig cc
throw errors, hopefully this will make compile successfully, WIP.
pip install -U zigcc
This will install three executables:
-
zigcc
, used forCC
-
zigcxx
, used forCXX
-
zigcargo
can used to replacecargo
, it will automatically set-
CC
CARGO_TARGET_<triple>_LINKER
tozigcc
-
CXX
tozigcxx
-
Adding a step to your workflow like this:
- uses: jiacai2050/zigcc@main
with:
zig-version: master
Then you can invoke zigcc
zigcxx
zigcargo
in following steps.
There some are env variable to config zigcc:
-
ZIGCC_FLAGS
, space separated flags, pass to zig cc. An example is set this to-fno-sanitize=undefined
to disable sanitize since they may break your programs. See Catching undefined behavior with zig cc -
ZIGCC_BLACKLIST_FLAGS
, space separated flags, used to filter flagszig cc
don’t support, such as-Wl,-dylib
otherwise you could see errors below= note: error: unsupported linker arg: -dylib
-
ZIGCC_VERBOSE
Set to1
enable verbose logs.