Skip to content

Commit

Permalink
docs: create install.md
Browse files Browse the repository at this point in the history
  • Loading branch information
hendriknielaender authored May 25, 2024
1 parent b022104 commit a7506a1
Showing 1 changed file with 96 additions and 0 deletions.
96 changes: 96 additions & 0 deletions docs/install.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
## Install

You can use `zig fetch` to conveniently set the hash in the `build.zig.zon` file and update an existing dependency.

Run the following command to fetch the zBench package:
```shell
zig fetch https://github.com/hendriknielaender/zbench/archive/<COMMIT>.tar.gz --save
```
Using `zig fetch` simplifies managing dependencies by automatically handling the package hash, ensuring your `build.zig.zon` file is up to date.

### Option 1 (build.zig.zon)

1. Declare zBench as a dependency in `build.zig.zon`:

```diff
.{
.name = "my-project",
.version = "1.0.0",
.paths = .{""},
.dependencies = .{
+ .zbench = .{
+ .url = "https://github.com/hendriknielaender/zbench/archive/<COMMIT>.tar.gz",
+ },
},
}
```

2. Add the module in `build.zig`:

```diff
const std = @import("std");

pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});

+ const opts = .{ .target = target, .optimize = optimize };
+ const zbench_module = b.dependency("zbench", opts).module("zbench");

const exe = b.addExecutable(.{
.name = "test",
.root_source_file = .{ .path = "src/main.zig" },
.target = target,
.optimize = optimize,
});
+ exe.root_module.addImport("zbench", zbench_module);
exe.install();

...
}
```

3. Get the package hash:

```shell
$ zig build
my-project/build.zig.zon:6:20: error: url field is missing corresponding hash field
.url = "https://github.com/hendriknielaender/zbench/archive/<COMMIT>.tar.gz",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note: expected .hash = "<HASH>",
```

4. Update `build.zig.zon` package hash value:

```diff
.{
.name = "my-project",
.version = "1.0.0",
.paths = .{""},
.dependencies = .{
.zbench = .{
.url = "https://github.com/hendriknielaender/zbench/archive/<COMMIT>.tar.gz",
+ .hash = "<HASH>",
},
},
}
```

### Option 2 (git submodule)

On your project root directory make a directory name libs.

- Run `git submodule add https://github.com/hendriknielaender/zBench libs/zbench`
- Then add the module into your `build.zig`

```zig
exe.addAnonymousModule("zbench", .{
.source_file = .{ .path = "libs/zbench/zbench.zig" },
});
```

Now you can import like this:

```zig
const zbench = @import("zbench");
```

0 comments on commit a7506a1

Please sign in to comment.