几天前,通过 Emscripten 交叉编译为 JavaScript 终于每晚实现了。我想以这种方式使用
glium
编译一个项目。然而,许多 crate 中仍然存在许多与 Emscripten 相关的 bug。虽然维护人员通常会快速修复这些错误,但他们不一定会立即将这些错误修复发布到 crates.io。
就我而言,
glium
取决于glutin
。 glutin
有一个错误,现已修复,但仅限于 git 存储库,而不是 crates.io
。 注意:glutin
不是我的项目的直接依赖项;只有间接的通过glium
!
glutin
存储库 作为 glutin
而不是 crates.io
的源?
您可以在项目的 [replace]
中使用
Cargo.toml
部分。您可以在 Cargo 文档中找到有关该功能的文档。
就您而言,
glium
取决于glutin 0.6.1
。 crates.io 上的版本 0.6.1
仍然包含该错误。所以只需将其添加到您的Cargo.toml
:
[replace]
"glutin:0.6.1" = { git = 'https://github.com/tomaka/glutin' }
但是请注意,
[...] 替换的 crate 不仅必须具有相同的名称,而且必须具有相同的版本。
但即使在版本不匹配的情况下(存储库已经包含较新的版本),如果板条箱的维护者为每个版本创建 git 标签(Rust 社区中的许多人都这样做),您仍然会很幸运。在这种情况下,您只需指定标签即可:
[replace]
"glutin:0.6.1" = {
git = 'https://github.com/tomaka/glutin'
tag = 'v0.6.1'
}
遗憾的是,这不适用于
glutin
,因为维护者没有为每个版本创建标签。在这种情况下,您可以简单地找到版本更新之前的最后一次提交,并使用 rev = 'b4a3d0...'
指定它,或使用 branch = '...'
键指定特定分支。
[replace]
部分已被弃用,取而代之的是 [patch
]。现在看起来是这样的:
[patch.crates-io]
glutin = { git = 'https://github.com/tomaka/glutin' }