如何在不运行的情况下构建Rust示例

5

有没有一种方法可以在不运行它们的情况下构建Rust示例程序? 具体来说,是为了使用Travis CI测试示例是否成功构建。


你能再解释一下第二句话吗? cargo build 只是编译 Rust 示例。cargo test 会编译和测试 cargo。只有 cargo run <name> 才会实际运行示例,对吗? - Daniel Fath
@DanielFath 我想测试所有的示例是否都能够成功构建,而不必运行它们 - cargo build 运行成功,但是当你查看 ...target/debug/examples 目录时,什么也没有,但是如果使用 cargo run --example <name>,则示例将在该目录中构建。 - Ross Muir
2
为什么那么重要?你想要实现什么?如果您的Travis CI运行cargo test``cargo build,它只有在两者都成功构建时才会通过。 - Daniel Fath
你尝试过 cargo test examples 吗?如果你传递名称,cargo 可以运行特定的测试并跳过所有其他测试。也许对于示例也是如此,只要你没有命名为 examples 的测试。 - oli_obk
3个回答

4

cargo test 命令可以自动构建示例代码(但不运行它们)。我认为这个命令会在主要的测试运行之前先构建示例代码,但你可以通过运行 cargo test -v 命令来验证。


...target/debug/examples目录下运行后好像没有构建任何东西? - Ross Muir
1
仍需要执行 carbo build --example <blah> - Jorge Israel Peña
@JorgeIsraelPeña 我正在使用最新的Nightly版本,但是它给了我以下错误信息: “未知标志: '--example'用法: cargo build [选项]” - Ross Muir
@RossMuir 我的评论是针对 huon 的。目前除了 huon 建议的运行测试之外,没有其他方法可以实现你想要的功能。我的观点是我们需要像 cargo build --example <blah> 这样的东西。 - Jorge Israel Peña
@RossMuir,嗯,我有点困惑。我刚刚在自己的一个项目中运行了 cargo clean && cargo test -v 命令,输出包括 Running `rustc examples/...` 行(即构建示例),而且 target/debug/examples/ 目录包含了我期望的所有二进制文件。你能澄清一下吗? - huon
显示剩余2条评论

1
我使用以下代码在Travis上运行。
language: rust
rust:
  - stable
  - beta
script:
  - cargo build --verbose --all
  - cargo test --verbose --all

0

cargo test 运行示例。

要构建它们,我这样做:

for i in examples/*; do cargo build --target=x86_64-pc-windows-gnu --verbose --example $(basename $i .rs); done

Cargo问题#192涵盖了类似功能的请求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接