Cargo: Crate in Integrationstests nicht gefunden, wenn `crate-type = ["cdylib"]`

Erstellt am 13. Feb. 2019  ·  3Kommentare  ·  Quelle: rust-lang/cargo

Problem
Ich entwickle Code, der mit Python funktionieren muss, was erfordert, dass ich einen Crate-Typ von cdylib . Es stellt sich heraus, dass der Code innerhalb des Verzeichnisses die Kiste nicht finden kann, wenn Sie der Empfehlung folgen, ein tests Verzeichnis zu verwenden, was mit einem Fehler wie dem folgenden fehlschlägt:

   Compiling cargo_issue_6659 v0.1.0 (/home/cfkaran2/Desktop/cargo_issue_6659)
     Running `rustc --edition=2018 --crate-name tester tests/tester.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=0525a91fc572753f -C extra-filename=-0525a91fc572753f --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps`
     Running `rustc --edition=2018 --crate-name cargo_issue_6659 src/lib.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=b9fa70b838dfddae -C extra-filename=-b9fa70b838dfddae --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps`
error[E0463]: can't find crate for `rustc_issue_report_cdylib`
 --> tests/tester.rs:1:1
  |
1 | extern crate rustc_issue_report_cdylib;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate

error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: Could not compile `cargo_issue_6659`.

Caused by:
  process didn't exit successfully: `rustc --edition=2018 --crate-name tester tests/tester.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=0525a91fc572753f -C extra-filename=-0525a91fc572753f --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps` (exit code: 1)
warning: build failed, waiting for other jobs to finish...
error: build failed

Schritte

  1. Schauen Sie sich das Repository unter https://github.com/ckaran/cargo_issue_6659 an.
  2. Folgen Sie den Anweisungen im README.md

Mögliche Lösungen)

Keine bekannt.

Anmerkungen

$ cargo -V -vvv
cargo 1.32.0 (8610973aa 2019-01-02)
release: 1.32.0
commit-hash: 8610973aaf48615ba7dc9a38a9a2795ba6f36a31
commit-date: 2019-01-02

$ rustc -Vv
rustc 1.32.0 (9fda7c223 2019-01-16)
binary: rustc
commit-hash: 9fda7c2237db910e41d6a712e9a2139b352e558b
commit-date: 2019-01-16
host: x86_64-unknown-linux-gnu
release: 1.32.0
LLVM version: 8.0

$ uname -a
Linux EMANE 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release --all
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:    18.04
Codename:   bionic
A-crate-types A-documenting-cargo-itself

Hilfreichster Kommentar

Sie können rlib (oder lib ) zur crate-type Liste hinzufügen und es sollte funktionieren. Tests können nicht mit der cdylib verknüpft werden.

Übrigens, es gibt einen Tippfehler in Ihrem Beispiel, tests/tester.rs sollte extern crate cargo_issue_6659; .

Alle 3 Kommentare

Sie können rlib (oder lib ) zur crate-type Liste hinzufügen und es sollte funktionieren. Tests können nicht mit der cdylib verknüpft werden.

Übrigens, es gibt einen Tippfehler in Ihrem Beispiel, tests/tester.rs sollte extern crate cargo_issue_6659; .

Ah, Entschuldigung, da es ein Henne-Ei-Problem zwischen der Erstellung eines Repos gibt, das den gleichen Namen hat wie das Problem, für das es gedacht ist, vergesse ich manchmal, die Namen zu ändern. Jetzt behoben.

Was die Einstellung auf rlib oder lib betrifft , so ist das Problem, dass ich cdylib müssen und nicht mein Die Arbeit der Integrationstests war für mich überraschend. Wenn bekannt ist, dass Tests nicht mit cdylib Typbibliotheken verknüpft werden können, lohnt es sich möglicherweise, die Dokumentation von cargo (oder vielleicht rustc ) zu aktualisieren, um diese Tatsache widerzuspiegeln .

Ja, die Dokumentation für Kistentypen könnte im Allgemeinen definitiv verbessert werden.

Fühlen Sie sich frei, hier weitere Kommentare zu hinterlassen, wenn Sie auf andere Probleme stoßen. Ansonsten lasse ich das einfach als Dokumentationsproblem offen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen