Hey~ I've been trying to hook rust up the v8 VM to play with, and although I've got it working, it's kind of annoying to do.
In CMake you can extract a list of build targets using something like: function(get_dependent_targets TARGET RETURN) get_property(LOC TARGET ${TARGET} PROPERTY LOCATION) set(RTN ${LOC}) get_property(LIBS TARGET ${TARGET} PROPERTY LINK_LIBRARIES) foreach(LIB ${LIBS}) get_dependent_targets(${LIB} LIB_LIST) foreach(LIBI ${LIB_LIST}) list(APPEND RTN ${LIBI}) endforeach() endforeach() set(${RETURN} ${RTN} PARENT_SCOPE) endfunction() That generates a list of the absolute paths to the libraries you're linking against for your target. So in my case I have some light V8 interop libraries in libv8i, and the output list of static libraries to link against is: /Users/doug/projects/rust/rust-v8/build/libv8i.a /Users/doug/projects/rust/rust-v8/build/src/v8/out/native/libv8_base.x64.a /Users/doug/projects/rust/rust-v8/build/src/v8/out/native/libv8_snapshot.a /Users/doug/projects/rust/rust-v8/build/src/v8/out/native/libicudata.a /Users/doug/projects/rust/rust-v8/build/src/v8/out/native/libicui18n.a /Users/doug/projects/rust/rust-v8/build/src/v8/out/native/libicuuc.a Now, what do I do with that list to link with rustc? I tried generating an include using a template, and the output was along the lines of: #[link(name = "/Users/doug/projects/rust/rust-v8/build/libv8i.a", kind = "static")] #[link(name = "/Users/doug/projects/rust/rust-v8/build/src/v8/out/native/libv8_base.x64.a", kind = "static")] #[link(name = "/Users/doug/projects/rust/rust-v8/build/src/v8/out/native/libv8_snapshot.a", kind = "static")] #[link(name = "/Users/doug/projects/rust/rust-v8/build/src/v8/out/native/libicudata.a", kind = "static")] #[link(name = "/Users/doug/projects/rust/rust-v8/build/src/v8/out/native/libicui18n.a", kind = "static")] #[link(name = "/Users/doug/projects/rust/rust-v8/build/src/v8/out/native/libicuuc.a", kind = "static")] extern { ... etc. } ...but that doesn't work. Instead I've had to fudge my template down to non-absolute paths, and invoke it like this: rustc package.rs -Lbuild -Lbuild/src/v8/out/native It's not a huge deal in this trivial example, but as the number of dependencies increases you end up stuck either have an absolutely massive rustc call script to generate (or something like that), or having to copy all your static libraries into a single folder post-build. So TLDR; is there some way to specify an absolute path for #[link]? (I did see #[link_args] but that's not portable as I understand it) ~ Doug.
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev