A few days ago,通过Emscripten对JavaScript进行交叉编译终于在夜间播出。我想以这种方式使用glium
编译项目。但是,许多板条箱中仍然存在许多与Emscripten相关的错误。虽然维护人员通常会快速修复这些错误,但他们不一定会立即将这些错误修复发布到crates.io。
就我而言,glium
取决于glutin
。 glutin
有一个现在修复的错误,但仅限于git存储库,而不是crates.io
。 注意:glutin
不是我项目的直接依赖项;只有间接的glium
!
如何告诉Cargo使用the glutin
repository作为glutin
而不是crates.io
的来源?
答案 0 :(得分:10)
您可以在项目的[replace]
中使用 Cargo.toml
部分。您可以找到有关该功能的文档here in the Cargo documentation。
在您的情况下,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 = '...'
指定特定分支键。