diff --git a/build.rs b/build.rs index cf06740..1b0fbda 100644 --- a/build.rs +++ b/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(); } diff --git a/common/src/lib.rs b/common/src/lib.rs index 05ead07..743a217 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -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 = 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"); diff --git a/src/lib.rs b/src/lib.rs index cf4c75f..f8aae0e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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};