<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">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.<br>
      <br>
      Thanks!<br>
      <br>
      On 01/17/2013 03:21 PM, Eric Perko wrote:<br>
    </div>
    <blockquote
cite="mid:CAOtrKvkO8rQ-1nHnf0MCivDtnTp9RLfd+VQeFetBjjphVUuZxQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">scons does have support for automatically grabbing
        the appropriate include and link flags from pkg-config. See <a
          moz-do-not-send="true"
          href="http://www.scons.org/wiki/UsingPkgConfig">http://www.scons.org/wiki/UsingPkgConfig</a> (specifically
        the ParseConfig command). I've not tried it with packages built
        via catkin, but I have used it successfully with e.g. PCL.
        <div>
          <br>
        </div>
        <div style="">- Eric</div>
      </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">On Thu, Jan 17, 2013 at 4:16 PM,
          William Woodall <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:wwoodall@willowgarage.com" target="_blank">wwoodall@willowgarage.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">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.
            <div>
              <br>
            </div>
            <div>--
              <div>
                <div class="h5"><br>
                  <br>
                  <div class="gmail_quote">On Thu, Jan 17, 2013 at 12:59
                    PM, Brian Wightman <span dir="ltr"><<a
                        moz-do-not-send="true"
                        href="mailto:brian.j.wightman@nasa.gov"
                        target="_blank">brian.j.wightman@nasa.gov</a>></span>
                    wrote:<br>
                    <blockquote class="gmail_quote" style="margin:0 0 0
                      .8ex;border-left:1px #ccc solid;padding-left:1ex">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?<br>
                      <br>
                      My use-case may sound a bit odd:<br>
                      <br>
                      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.<br>
                      <br>
                      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.<br>
                      <br>
                      If anyone's curious, here's the scons build code
                      I've been using:<br>
                      <br>
                      import os, rospkg<br>
                      def load_ros_deps(env):<br>
                          pkg_name = os.path.basename(Dir('.').srcnode().abspath)<br>
                          depends = []<br>
                          for d in map(repr,
                      rospkg.RosPack().get_manifest(pkg_name).depends):<br>
                              depends.append(d)<br>
                              # load exports<br>
                              manifest = rospkg.RosPack().get_manifest(d)<br>
                              for f in [j for j in
                      [manifest.get_export('cpp', i) for i in ['cflags',
                      'lflags']] if j]:<br>
                                  allf = f[0].split('`')<br>
                                  for conf in allf[1::2]:<br>
                                      env.ParseConfig(conf)<br>
                                  env.MergeFlags(env.ParseFlags('
                      '.join(allf[0::2])))<br>
                              pkg_path = os.path.dirname(manifest.filename)<br>
                              msg_path = os.path.join(pkg_path,
                      'msg_gen', 'cpp', 'include')<br>
                              if os.path.exists(msg_path):<br>
                                  env.MergeFlags(env.ParseFlags('-I{}'.format(msg_path)))<br>
                      <br>
                      env = Environment(<br>
                          ENV = {'PYTHONPATH': os.environ['PYTHONPATH'],
                      # allow us to call rosboost-cfg<br>
                                 'PKG_CONFIG_PATH':
                      os.environ['PKG_CONFIG_PATH']},<br>
                          ...<br>
                      )<br>
                      <br>
                      Certainly I can achieve the same thing with CMake,
                      but I find scons to be much nicer to work with.<br>
                      <br>
                      Thanks,<br>
                      Brian Wightman<br>
                      _______________________________________________<br>
                      ros-users mailing list<br>
                      <a moz-do-not-send="true"
                        href="mailto:ros-users@code.ros.org"
                        target="_blank">ros-users@code.ros.org</a><br>
                      <a moz-do-not-send="true"
                        href="https://code.ros.org/mailman/listinfo/ros-users"
                        target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
                    </blockquote>
                  </div>
                  <br>
                  <br clear="all">
                  <div><br>
                  </div>
                </div>
              </div>
              <span class="HOEnZb"><font color="#888888">-- <br>
                  William Woodall
                  <div>Willow Garage - Software Engineer</div>
                  <div><a moz-do-not-send="true"
                      href="mailto:wwoodall@willowgarage.com"
                      target="_blank">wwoodall@willowgarage.com</a></div>
                </font></span></div>
            <br>
            _______________________________________________<br>
            ros-users mailing list<br>
            <a moz-do-not-send="true"
              href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
            <a moz-do-not-send="true"
              href="https://code.ros.org/mailman/listinfo/ros-users"
              target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
            <br>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
  </body>
</html>