Skip to content

mrexodia/zig-cross

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3c4cbb7 · Feb 17, 2025

History

13 Commits
Feb 17, 2025
Oct 21, 2022
Oct 21, 2022
Oct 21, 2022
Dec 20, 2024
Dec 20, 2024
Dec 20, 2024
Dec 20, 2024
Jan 12, 2025
Jan 12, 2025
Jan 15, 2025
Dec 20, 2024
Dec 20, 2024
Dec 20, 2024
Dec 20, 2024
Jan 15, 2025
Dec 20, 2024

Repository files navigation

zig-cross

Example of using zig as a CMake Toolchain for cross compiling.

Reference: https://zig.news/kristoff/cross-compile-a-c-c-project-with-zig-3599

Building

  • Install 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:

include(${CMAKE_CURRENT_LIST_DIR}/cmake/zig-toolchain.cmake)

clangd

To get clangd to work you need to first enable generation of compile_commands.json:

cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

Additionally you need to pass pass the following arguments to clangd:

"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.