Open jakubStefanisin opened 5 months ago
If you want to use idlc to genereta source code for rosidl , you can try How to use idlc to compile *.idl
This is a bug that I can reproduce without any difficulty, I looked at it for a few minutes and came up with a quick hack that seems to make it work, but it'll take me a bit more time to fix it properly:
diff --git a/src/idl/src/directive.c b/src/idl/src/directive.c
index bb24af39e..ad63afea0 100644
--- a/src/idl/src/directive.c
+++ b/src/idl/src/directive.c
@@ -149,10 +149,13 @@ static idl_retcode_t push_line(idl_pstate_t *pstate, struct line *dir)
if ((ret = idl_normalize_path(dir->path, &norm)) < 0) {
idl_error(pstate, NULL, "Invalid line marker: path '%s' not found", dir->path);
+#if 0
return ret;
+#endif
+ } else {
+ idl_free(dir->path);
+ dir->path = norm;
}
- idl_free(dir->path);
- dir->path = norm;
assert(dir->file);
if (idl_isabsolute(dir->file)) {
The idea of the hack is basically to treat it as a warning, rather than an error. It is relaly only about managing the include directory stack and the line markers, and so continuing seems the lesser of the evils.
Getting weird behavior, Time.idl is found under
std_msgs/msg
but then generation breaks even if direct include tostd_msgs/msg
is provided. Seems like relative paths inside included IDL are not processed correctly.File structure:
AccelStamped.idl:
Header .idl:
ERROR:
Is this expected behavior?