Rosanswers logo


I'm currently creating a Framework for Apple's iOS that includes all the roscpp binaries (for arm6/7 and i386) and the ros header files. If done properly a developer can just import the framework and does not have to worry about architecture or Header location. (runs on simulator(x86) and device(arm)). More Info: http://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/BPFrameworks.pdf

Everything works fine, except of the fact that I had to change all includes to message headers, since they cannot be found under ros, but have independent top-level names. Apple's Framework design only allows for includes like <framework_name>/HEADERSTRUCTURE (here: ros/HEADERSTRUCTURE) so for me, there seems to be no solution to include header files that can not be found unter ros/.

I just wanted to know if it's a good design decision to not group all headers underneath of ros (at least if they are part of roscpp).

I'm also open to suggestions how I can keep the framework structure, without having to rename all references to _msgs/.h


Originally posted by rado0x54 on ROS Answers with karma: 191 on 2011-06-22

Post score: 4

Original comments

Comment by rado0x54 on 2011-07-14:
Well, I skipped using the framework architecture and went with manual header and library includes.. There's just too much that lives outside the scope of ros.. (messages, tf.. etc)

Comment by Asomerville on 2011-06-22:
That's a good question, and applies to the namespaces as well e.g. foo_msgs::MyMsg vs ros::foo_msgs::MyMsg


1 Answer 1


Rosanswers logo

The "ros::" namespace is only meant for ROS-specific APIs. Placing everything the same namespace makes it difficult to determine what are the actual client library APIs, and what is separate. Also, putting them in the same namespace would require making more names illegal as they would claim the same symbols that the client library is using.

Originally posted by kwc with karma: 12244 on 2011-09-02

This answer was ACCEPTED on the original site

Post score: 1


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.