Howdy everyone, William has agreed to be the guinea pig for our new answers.ros.org site that Tully and Melonee put together. It's based on an open-source, Stack Overflow-style system. Please follow up on this thread here: http://answers.ros.org/question/9/build-architecture-question Answer/vote/tag to your delight! cheers, Ken On Mon, Feb 14, 2011 at 4:47 PM, William Woodall wrote: > So I have been working on using IRI's segway library to implement a segway > driver for ROS, and I have run into a situation where I don't know how to > proceed. > IRI is setting up a port of their stuff for ROS, so at this point it is more > educational for me. > > So, the IRI segway library relies on some of their other libraries. > My ROS Node depends on iri_segway_rmp200. > iri_segway_rmp200 depends on iricomms and iriutils. > iricomms depends on iriutils. > All of the IRI stuff is in SVN and is LGPL licensed, my stuff can be > considered MIT.  They are setup to build dynamically linked libraries (.so > on linux and .dylib on osx). > The way I see it there are a few ways to approach this setup in ROS: (Maybe > there is a 4th, correct setup) > > Put a script in rosdep.yaml to (svn co; make; sudo make install) each of the > libraries from IRI. > > This is good because the libraries are installed and no further > configuration is required, but requires root access > Also, they install Find.cmake files in the cmake shared Modules folder, > which is nice > > Create a ROS pkg for each library and use rosmake to build them, using the > svn_checkout.mk make script and patches to build and install them to the pkg > dir > > This is nice because the libraries are contained in the ros pkg > But, you need to export cpp flags to include and link directories > How do you handle runtime dynamic linking? > > Download/Distribute and build the libraries in your ROS pkg and statically > link your node to the libraries > > Doesn't allow multiple nodes to link to a single source for the libraries > (build the libs for each node that uses them) > > So here are my questions: > > What is the preferred method of build architecture? > How do you handle dynamic linking at runtime? (the .so file is in package A, > and how does a binary in package B find it at runtime?) > How can you handle installing and referencing Find.cmake files that > libraries have? (use manifext.xml's instead, is my guess) > What if any licensing concerns are there? (patches and static linking, etc) > > Sorry if some of these questions are silly, I am still learning these more > complicated build systems (rosmake/cmake). > Thanks, > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > William Woodall > Graduate Software Engineering > Auburn University > w@auburn.edu > wjwwood@gmail.com > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > _______________________________________________ > ros-users mailing list > ros-users@code.ros.org > https://code.ros.org/mailman/listinfo/ros-users > >