экспорт пути к общей библиотеке через несколько уровней ящиков - PullRequest
0 голосов
/ 05 апреля 2019

В 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
...