zig 错误:模块测试中没有名为“共享”的模块可用

问题描述 投票:0回答:1

我正在学习 zig 并坚持使用它的导入系统。 这是我的项目树:

├── build.zig
├── build.zig.zon
└── src
    ├── foo
    │   ├── bar.zig
    │   └── foo.zig
    ├── main.zig
    ├── root.zig
    └── shared
        ├── shared.zig
        └── util.zig

Zig(还没有?)有内置模块/包系统,所以如果我导入

const util = @import("../shared/util.zig");

在 bar.zig 内并运行测试:

zig test **redacted**/zig-modules/src/foo/bar.zig -O Debug

我会收到一个错误:

bar.zig:1:22: error: import of file outside module path: '../shared/util.zig'

因此,我将 2 个模块添加到使用

zig init
:

生成的默认 build.zig 中
const fooModule = b.addModule("foo", .{
    .root_source_file = b.path("src/foo/foo.zig"),
});

const sharedModule = b.addModule("shared", .{
    .root_source_file = b.path("src/shared/shared.zig"),
});

lib.root_module.addImport("foo", fooModule);
lib.root_module.addImport("shared", sharedModule);

exe.root_module.addImport("foo", fooModule);
exe.root_module.addImport("shared", sharedModule);

lib_unit_tests.root_module.addImport("foo", fooModule);
lib_unit_tests.root_module.addImport("shared", sharedModule);

现在,当我导入

const util = @import("shared").util;
并运行测试时,我收到另一个错误:

bar.zig:1:22: error: no module named 'shared' available within module test

共享.zig:

pub const util = @import("util.zig");

我在bun、tigerbeetle和其他一些项目中搜索了解决方案,但没有成功在我的代码中采用它。有人可以提供如何烹饪 zig 0.13.0 模块的线索或项目示例吗?

build module package zig
1个回答
0
投票

Zig 有一个模块/包系统。您想要做的事情本质上可以通过

build.zig
生成的默认
zig init
来实现。如果
shared
foo
位于
src
目录中,则无需手动添加它们作为模块。您所需要做的就是运行
zig build [step]
。例如,
zig build test
运行项目中的所有测试,或
zig build run
编译并运行项目,或者仅
zig build
编译项目。

© www.soinside.com 2019 - 2024. All rights reserved.