-
Notifications
You must be signed in to change notification settings - Fork 54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Protobuf headers not found when compiling with CMI #65
Comments
This is likely a build ordering issue due to the fact that those files are generated (here) and CMake doesn't know that, so it cannot pass that information on to whatever build scripts it generates (be it This in turn causes Compare this to ROS 1 message/service/action headers and how you have to use It will probably work if you first build just A quick look at the protobuf CMake integration doesn't show any targets we could depend on directly. Perhaps something like this could be used: add_custom_target(abb_libegm_proto_generated DEPENDS ${EgmProtoSources} ${EgmProtoHeaders}) and then: list(APPEND ${PROJECT_NAME}_EXPORTED_TARGETS abb_libegm_proto_generated) This would be ROS 1 / Catkin specific, but I'm not sure at this point whether we'd need anything for this in #63. |
By chance, Also, to be clear, both packages build fine using |
It's likely a problem with how we export the include dirs. In a build with Could you try using an Finally: can you tell me why you want to use CMI? |
I wanted to use CMI because the latest version of opw_kinematics seems to require it. I also found a bunch of mistakes in my cmake files which were uncovered by CMI... which seemed like a benefit to have found and fixed. I'll do some reading on how to use an install space, I believe this: https://catkin-tools.readthedocs.io/en/latest/verbs/catkin_config.html provides the relevant information, right? |
No, it doesn't. It's just that So using CMI is one option, but it's not a direct requirement.
That would be the documentation for You should just be able to run |
That makes sense about However, I encounter the same problem when running |
Ok, so the Catkin approach here would be to provide an But seeing as we have #63 in the pipeline (which will do things differently anyway) I'm hesitant to start adding that. I've just verified locally that using an
Please make sure there are no cached paths anywhere in your workspace by removing the |
The issue could be these abb_libegm/include/abb_libegm/egm_base_interface.h Lines 42 to 43 in 142f5a5
they don't prefix the package name, and only As a quick work-around, you could prefix those For a This is exactly what the alternatively, you could create a Catkin underlay with just |
Few things:
I'm going to get fresh copies of Thanks again for the assistance. I may attempt those underlays/overlays, though the specific implementation goes over my head, it's something I could probably learn. I'll report back once I have a new package. |
it doesn't matter. There is a slight difference in lookup order, but in the end it will find the same files.
you'd have to chance it in all files that
I don't expect that to make any difference if you didn't change all files including those generated headers.
It would probably be the easiest workaround for now. You could check this tutorial on overlaying and workspace chaining. You'd essentially create a first workspace that overlays Then Now build the second workspace with regular After you've But instead of having the chain:
you'd now have:
You only create the first workspace to get |
Your workaround (workspace overlay) worked perfectly. Can't thank you enough for your assistance! |
I'm trying to run catkin_make_isolated, and a package which depends on abb_libegm leads to:
Not sure how to fix!
Edit, one such example would be the egm samples package.
The text was updated successfully, but these errors were encountered: