Generate one source file per ros package
This commit is contained in:
parent
c73175238e
commit
4d1d223ece
18
build.rs
18
build.rs
|
|
@ -13,7 +13,7 @@ fn main() {
|
|||
|
||||
let msgs = as_map(&msgs_list);
|
||||
|
||||
let mut codegen = String::new();
|
||||
let mut modules = String::new();
|
||||
|
||||
for (module, prefixes) in &msgs {
|
||||
println!(
|
||||
|
|
@ -26,8 +26,10 @@ fn main() {
|
|||
);
|
||||
println!("cargo:rustc-link-lib=dylib={}__rosidl_generator_c", module);
|
||||
|
||||
codegen.push_str(&format!("pub mod {} {{\n", module));
|
||||
|
||||
modules.push_str(&format!("pub mod {};\n", module));
|
||||
|
||||
let mut codegen = String::new();
|
||||
for (prefix, msgs) in prefixes {
|
||||
codegen.push_str(&format!(" pub mod {} {{\n", prefix));
|
||||
codegen.push_str(" use super::super::*;\n");
|
||||
|
|
@ -40,18 +42,20 @@ fn main() {
|
|||
|
||||
codegen.push_str(" }\n");
|
||||
}
|
||||
|
||||
codegen.push_str("}\n");
|
||||
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
|
||||
let mod_fn = out_path.join(&format!("{}.rs", module));
|
||||
let mut f = File::create(mod_fn).unwrap();
|
||||
write!(f, "{}", codegen).unwrap();
|
||||
}
|
||||
|
||||
let untyped_helper = generate_untyped_helper(&msgs_list);
|
||||
|
||||
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
|
||||
let msgs_fn = out_path.join("generated_msgs.rs");
|
||||
let untyped_fn = out_path.join("generated_untyped_helper.rs");
|
||||
let msgs_fn = out_path.join("_r2r_generated_msgs.rs");
|
||||
let untyped_fn = out_path.join("_r2r_generated_untyped_helper.rs");
|
||||
|
||||
let mut f = File::create(msgs_fn).unwrap();
|
||||
write!(f, "{}", codegen).unwrap();
|
||||
write!(f, "{}", modules).unwrap();
|
||||
let mut f = File::create(untyped_fn).unwrap();
|
||||
write!(f, "{}", untyped_helper).unwrap();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,7 +102,8 @@ std_msgs/msg/Bool
|
|||
x/y
|
||||
std_msgs/msg/String
|
||||
";
|
||||
let parsed = parse_msgs(msgs);
|
||||
let msgs = msgs.lines().map(|l|l.to_string()).collect();
|
||||
let parsed = parse_msgs(&msgs);
|
||||
assert_eq!(parsed[0].module, "std_msgs");
|
||||
assert_eq!(parsed[0].prefix, "msg");
|
||||
assert_eq!(parsed[0].name, "Bool");
|
||||
|
|
@ -118,7 +119,8 @@ std_msgs/msg/Bool
|
|||
x/y
|
||||
std_msgs/msg/String
|
||||
";
|
||||
let parsed = parse_msgs(msgs);
|
||||
let msgs: Vec<String> = msgs.lines().map(|l|l.to_string()).collect();
|
||||
let parsed = parse_msgs(&msgs);
|
||||
let map = as_map(&parsed);
|
||||
|
||||
assert_eq!(map.get("std_msgs").unwrap().get("msg").unwrap()[0], "Bool");
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
include!(concat!(env!("OUT_DIR"), "/generated_msgs.rs"));
|
||||
include!(concat!(env!("OUT_DIR"), "/generated_untyped_helper.rs"));
|
||||
include!(concat!(env!("OUT_DIR"), "/_r2r_generated_msgs.rs"));
|
||||
include!(concat!(env!("OUT_DIR"), "/_r2r_generated_untyped_helper.rs"));
|
||||
|
||||
#[macro_use] extern crate failure_derive;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
|
|
|||
Loading…
Reference in New Issue