let libpath = libpath.to_str().unwrap();
let libpath2 = path.join("target").join("debug").join("deps");
let libpath2 = libpath2.to_str().unwrap();
+ let mut args = vec![
+ "run".to_string(), "--".to_string(),
+ "--sysroot".to_string(), sysroot.to_string(),
+ "-L".to_string(), libpath.to_string(),
+ "-L".to_string(), libpath2.to_string(),
+ file.to_string()
+ ];
+ for file in std::fs::read_dir("target/debug/deps").unwrap() {
+ let file = file.unwrap();
+ if file.file_type().unwrap().is_file() {
+ let path = file.path();
+ if let Some(ext) = path.extension() {
+ if ext == "rlib" {
+ let name = path.file_stem().unwrap().to_str().unwrap();
+ if let Some(dash) = name.rfind('-') {
+ if name.starts_with("lib") {
+ args.push("--extern".to_string());
+ args.push(format!("{}={}", &name[3..dash], path.to_str().unwrap()));
+ }
+ }
+ }
+ }
+ }
+ }
Command::new("cargo")
- .args(&[
- "run", "--",
- "--sysroot", sysroot,
- "-L", libpath,
- "-L", libpath2,
- file
- ])
+ .args(&args)
.output()
.unwrap_or_else(|e| panic!("failed to execute process: {}", e))
}