Problème
Je développe du code qui doit fonctionner avec python, ce qui m'oblige à avoir un type de caisse de cdylib
. Il s'avère que lorsque vous suivez la recommandation d'utiliser un répertoire tests
, le code dans le répertoire ne peut pas trouver la caisse, échouant avec une erreur comme la suivante :
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
Pas
README.md
Solutions possibles)
Aucun connu.
Remarques
$ 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
Vous pouvez ajouter rlib
(ou lib
) à la liste crate-type
, et cela devrait fonctionner. Les tests ne peuvent pas être liés au cdylib.
BTW, il y a une faute de frappe dans votre exemple, tests/tester.rs
devrait avoir extern crate cargo_issue_6659;
.
Ah, désolé, puisqu'il y a un problème de poule et d'œuf entre la création d'un dépôt qui porte le même nom que le problème auquel il est destiné, j'oublie parfois de changer les noms. Maintenant corrigé.
En ce qui concerne le réglage sur rlib
ou lib
, le problème est que j'utilise pyo3 , qui dit que vous devez définir le type de bibliothèque sur cdylib
, et ne pas avoir mon le travail des tests d'intégration m'a surpris. Si l'on sait que les tests ne peuvent pas être liés aux bibliothèques de types cdylib
, il peut être utile de mettre à jour la documentation de cargo
(ou peut-être de rustc
) pour refléter ce fait .
Oui, la documentation des types de caisses pourrait certainement être améliorée en général.
N'hésitez pas à laisser plus de commentaires ici si vous rencontrez d'autres problèmes. Sinon, je vais simplement laisser cela ouvert en tant que problème de documentation.
Commentaire le plus utile
Vous pouvez ajouter
rlib
(oulib
) à la listecrate-type
, et cela devrait fonctionner. Les tests ne peuvent pas être liés au cdylib.BTW, il y a une faute de frappe dans votre exemple,
tests/tester.rs
devrait avoirextern crate cargo_issue_6659;
.