# zigtest **Repository Path**: graviton/zigtest ## Basic Information - **Project Name**: zigtest - **Description**: zig lang test - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-12 - **Last Updated**: 2026-05-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zigtest `zigtest` 是一个用于学习和实验 **Zig 语言** 以及 **Zig 作为 C/C++ 交叉编译工具链** 的测试项目仓库. 项目由多个相互独立的子项目组成, 每个子项目演示不同的技术点. --- ## 项目结构 ``` . ├── nbcleaner/ # Jupyter Notebook 清理工具(Zig) │ ├── build.zig │ ├── build.zig.zon │ └── src/ │ ├── main.zig │ └── root.zig │ ├── test/ # Zig 基础语法测试/演示 │ ├── build.zig │ ├── build.zig.zon │ └── src/ │ ├── main.zig │ └── root.zig │ ├── zigcomp/ # Zig 编译期(comptime)高级特性演示 │ ├── build.zig │ ├── build.zig.zon │ └── src/ │ ├── main.zig │ ├── compbasic.zig │ └── root.zig │ ├── zigcpp/ # 使用 Zig CC 编译的 C++ 项目(XMake) │ ├── build-cn.zig │ ├── xmake.lua │ ├── build_and_run.bat │ ├── .clang-format │ ├── .clangd │ ├── README.md │ └── src/ │ ├── main.cpp │ └── test0.h │ ├── .gitignore ├── LICENSE └── README.md # 本文件 ``` --- ## 子项目说明 | 子项目 | 技术栈 | 说明 | | ------------ | ------------- | -------------------------------------------------------------------------- | | `nbcleaner/` | Zig | CLI 工具: 清理 Jupyter Notebook(`.ipynb`)中的执行输出和 `execution_count` | | `test/` | Zig | 基础语法演示: 类型, 数组/切片, 控制流, 函数, 错误处理, 结构体 | | `zigcomp/` | Zig | 编译期(`comptime`)高级特性: 阶乘, 泛型结构体, 字符串哈希, 反射, jump table | | `zigcpp/` | C++17 + XMake | 使用 Zig CC(`zig c++`)作为编译器, 通过 XMake 构建 C++ 项目, 演示内存布局 | --- ## 前置条件 - **[Zig](https://ziglang.org/download/)**: `0.16.0-dev.225+0b75a2a1b` 或更高版本 - **[XMake](https://xmake.io)**(仅 `zigcpp/` 需要) - 目标平台: 主要在 Windows 上开发和测试, 代码理论上也支持 Linux / macOS --- ## 构建与运行 ### Zig 子项目(nbcleaner / test / zigcomp) 进入对应子目录后执行: ```bash cd <子项目目录> # 构建(默认 Debug 模式, 安装到 zig-out/) zig build # 构建并运行 zig build run # 传递命令行参数给程序 zig build run -- arg1 arg2 # 运行单元测试 zig build test # 发布模式构建 zig build -Doptimize=ReleaseFast ``` ### C++ 子项目(zigcpp) ```bash cd zigcpp # 配置为 Debug 模式并构建 xmake f -m debug xmake # 运行 xmake run # 发布模式 xmake f -m release xmake # 清理构建产物 xmake clean ``` Windows 下也可直接使用一键批处理: ```batch build_and_run.bat ``` --- ## 各子项目快速参考 ### nbcleaner 功能: 读取 `.ipynb` 文件, 清空每个 cell 的 `outputs` 和 `execution_count`, 输出 cleaned 版本. ```bash cd nbcleaner zig build run -- input.ipynb [output.ipynb] ``` ### test 功能: 依次打印 7 组基础语法演示(`test0` ~ `test6`). ```bash cd test zig build run ``` ### zigcomp 功能: 演示 `comptime` 编译期计算, 泛型结构体生成, 完美哈希表, 配置迁移, FizzBuzz 预生成. ```bash cd zigcomp zig build run ``` ### zigcpp 功能: 展示 Zig CC 作为 C++ 编译器的能力, 以及 C++ 类(含虚函数)的内存布局. ```bash cd zigcpp xmake f -m debug && xmake && xmake run ``` --- ## 注意事项 - **Zig 版本敏感性**: Zig 仍在快速迭代中, API(尤其是 `std.Build` 和 `std.json`)在不同版本间可能有破坏性变更. 如果编译失败, 请优先检查 Zig 版本. - **CUDA 硬编码路径**: `zigcpp/.clangd` 中硬编码了 `--cuda-path=C:/MyProgram/cuda`, 若本地无此路径, clangd 可能会报错, 需按需修改或移除. - **Notebook 清理工具会覆盖原文件**: `nbcleaner` 在只提供一个参数时会将输出写回原始文件, 使用前建议备份. - **无外部依赖**: 所有 Zig 子项目均未声明外部包依赖, 仅使用 Zig 标准库.