[ros-users] catkin support in python rospkg
Brian Wightman
brian.j.wightman at nasa.gov
Thu Jan 17 21:30:58 UTC 2013
I've actually been using pkg-config from the exports with ParseConfig.
If catkin provides pkg-config support this sounds even easier than
extracting manifest exports.
Thanks!
On 01/17/2013 03:21 PM, Eric Perko wrote:
> scons does have support for automatically grabbing the appropriate
> include and link flags from pkg-config. See
> http://www.scons.org/wiki/UsingPkgConfig (specifically the ParseConfig
> command). I've not tried it with packages built via catkin, but I have
> used it successfully with e.g. PCL.
>
> - Eric
>
>
> On Thu, Jan 17, 2013 at 4:16 PM, William Woodall
> <wwoodall at willowgarage.com <mailto:wwoodall at willowgarage.com>> wrote:
>
> Catkin also provides CMake find_package infrastructure and
> pkg-config infrastructure for each package. I would think scons
> would support getting build flags from pkg-config given its
> popularity in many dev libraries. That is likely easier than
> extracting them from CMake and probably the easiest method in
> general.
>
> --
>
>
> On Thu, Jan 17, 2013 at 12:59 PM, Brian Wightman
> <brian.j.wightman at nasa.gov <mailto:brian.j.wightman at nasa.gov>> wrote:
>
> In rosbuild I was able to use rospkg to grab all of the
> [cflags, lflags] exports out of a given package's manifest. Is
> there a plan to add this functionality for catkin packages?
>
> My use-case may sound a bit odd:
>
> I have been using scons rather than cmake to build packages.
> The rospkg manifest.xml parsing makes this rather painless (20
> lines of python to collect all the build flags). Now with the
> "exports" buried in cmake files, I don't have a convenient way
> to access them.
>
> In particular, I have code that forwards ROS messages between
> systems with separate roscore instances. I have to compile in
> a publisher/subscriber call for each message type so I've
> found it convenient to auto-generate the HPP/CPP files from a
> list of message-containing packages (std_msgs, sensor_msgs,
> etc.) using Python and rospkg.
>
> If anyone's curious, here's the scons build code I've been using:
>
> import os, rospkg
> def load_ros_deps(env):
> pkg_name = os.path.basename(Dir('.').srcnode().abspath)
> depends = []
> for d in map(repr,
> rospkg.RosPack().get_manifest(pkg_name).depends):
> depends.append(d)
> # load exports
> manifest = rospkg.RosPack().get_manifest(d)
> for f in [j for j in [manifest.get_export('cpp', i)
> for i in ['cflags', 'lflags']] if j]:
> allf = f[0].split('`')
> for conf in allf[1::2]:
> env.ParseConfig(conf)
> env.MergeFlags(env.ParseFlags(' '.join(allf[0::2])))
> pkg_path = os.path.dirname(manifest.filename)
> msg_path = os.path.join(pkg_path, 'msg_gen', 'cpp',
> 'include')
> if os.path.exists(msg_path):
>
> env.MergeFlags(env.ParseFlags('-I{}'.format(msg_path)))
>
> env = Environment(
> ENV = {'PYTHONPATH': os.environ['PYTHONPATH'], # allow us
> to call rosboost-cfg
> 'PKG_CONFIG_PATH': os.environ['PKG_CONFIG_PATH']},
> ...
> )
>
> Certainly I can achieve the same thing with CMake, but I find
> scons to be much nicer to work with.
>
> Thanks,
> Brian Wightman
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org <mailto:ros-users at code.ros.org>
> https://code.ros.org/mailman/listinfo/ros-users
>
>
>
>
> --
> William Woodall
> Willow Garage - Software Engineer
> wwoodall at willowgarage.com <mailto:wwoodall at willowgarage.com>
>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org <mailto:ros-users at code.ros.org>
> https://code.ros.org/mailman/listinfo/ros-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20130117/407f5659/attachment-0004.html>
More information about the ros-users
mailing list