Files
zig-cross/README.md
2024-12-20 16:03:00 +01:00

37 lines
1.2 KiB
Markdown

# zig-cross
Example of using [zig](https://ziglang.org) as a CMake Toolchain for cross compiling.
Reference: https://zig.news/kristoff/cross-compile-a-c-c-project-with-zig-3599
## Building
- [Install zig](https://ziglang.org/learn/getting-started/#installing-zig) in your PATH (`choco install zig` on Windows)
- `cmake -B build-aarch64 -G Ninja --toolchain aarch64-linux-gnu.cmake`
- `cmake --build build-arch64`
You can create toolchains for other triples as well, just create a file named `aarch64-windows-gnu.cmake` with the following contents to build for Windows on ARM64:
```cmake
include(${CMAKE_CURRENT_LIST_DIR}/cmake/zig-toolchain.cmake)
```
## clangd
To get [clangd](https://clangd.llvm.org/) to work you need to first enable generation of `compile_commands.json`:
```sh
cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
```
Additionally you need to pass pass the following arguments to `clangd`:
```json
"clangd.arguments": [
"--log=verbose",
"--query-driver=**/zig-cc.cmd,**/zig-cc,**/zig-c++.cmd,**/zig-c++",
]
```
Without these arguments `clangd` will not query the driver (`zig c++`) and the include paths will not be resolved correctly.