В build.rs
из level1-sys
ящика у меня есть:
let dst = cmake::Config::new(Path::new("somelib"))
.build()
.join("build");
println!("cargo:rustc-link-search=native={}", dst.display());
println!("cargo:rustc-link-lib=dylib=somelib");
, затем есть level2
create, которое отправлено на level1-sys
, а затем есть level3
двоичный ящик.
Если я запускаю этот level3
ящик через cargo run
, все работает нормально, но если я запускаю его руками, он сообщает:
error while loading shared libraries: libsomelib.so: cannot open shared object file: No such file or directory
Есть ли способ найти путь к libsomelib.so
с cargo
?Мне нужна эта информация для внешнего скрипта, который должен упаковать двоичный файл.
Очевидно, я могу искать в подкаталоге target
, но я использую отладку / выпуск / кросс-компиляцию и так далее.Кроме того, даже для конкретного варианта, например target/release
, после нескольких перекомпоновок level1-sys
существует несколько библиотек libsomelib.so
, например:
target/release/build/level1-sys-46422ddc8585ba79/libsomelib.so
target/release/build/level1-sys-9daa760ee41fe7b8/libsomelib.so