<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Hello Christian,<br>
      <br>
      thanks for taking the time to give detailed feedback.<br>
      <br>
      there is documentation that maybe answer some of your more general
      questions here:<br>
      <br>
      <a class="moz-txt-link-freetext" href="http://ros.org/wiki/catkin">http://ros.org/wiki/catkin</a><br>
      <a class="moz-txt-link-freetext" href="http://ros.org/wiki/catkin_or_rosbuild">http://ros.org/wiki/catkin_or_rosbuild</a><br>
      <br>
      > Now instead of a
      usability improvement so that it automatically looks <br>
      > for files inside the msg/srv directory, you have to specify
      which directory<br>
      > the files reside
      in, each message and additionally the dependency for them.<br>
      <br>
      Regarding the cmake macro for message files in catkin, specifying
      the directory is not necessary, even though that has been done in
      many places (The roscpp tutorial doing so should probably be
      changed). Automatically looking up .srv and .msg files also still
      works, but the problem is that with catkin this will only be done
      when the CmakeLists.txt is new or has changed. So if you add a
      .msg file later to your project, invoking make or catkin_make
      would not generate message files, and you'd have to know and
      remember to invoke cmake explicitly, which is why it is
      recommended to list the .msg files lin the CMakeLists.txt file.
      This is a consequence of catkin not running configuration before
      building every time (as rosbuild did), a feature that should save
      developers some time (compared to rosbuild).<br>
      <br>
      > Also you
      have to specify each dependency of the package,<br>
      > additionally to the
      dependencies inside the package.xml <br>
      > where you have to also add
      some lines for generating messages.<br>
      <br>
      Why you currently have to state dependencies multiple times is
      explained somewhat here:<br>
<a class="moz-txt-link-freetext" href="http://ros.org/wiki/catkin/conceptual_overview#Dependency_Management">http://ros.org/wiki/catkin/conceptual_overview#Dependency_Management</a><br>
      but possibly the number of places dependency have to be stated
      could be reduced. <br>
      Your feedback on this is thankfully noted, it helps to know what
      users think.<br>
      <br>
      > Additionally
      the fact that I have to change to the catkin workspace<br>
      > directory to
      build one package really annoys me, please make some<br>
      > script which
      builds from any package directory or anywhere for the current
      workspace.<br>
      <br>
      You can create a ticket for catkin on github to discuss what you
      need, there is already one going into that direction:<br>
      <a class="moz-txt-link-freetext" href="https://github.com/ros/catkin/issues/294">https://github.com/ros/catkin/issues/294</a><br>
      Though since some concepts in catkin are very different to
      rosbuild, it is not trivial to make catkin behave too similar to
      rosbuild.<br>
      <br>
      Regarding the support for new programming languages, maybe that
      can better be discussed in the Buildsystem SIG:<br>
      <cite>groups.google.com/group/<b>ros</b>-<b>sig</b>-<b>buildsystem</b></cite><br>
      <br>
      cheers,<br>
        Thibault<br>
      <br>
      <br>
      <br>
      On 08.01.2013 11:50, Christian Holl wrote:<br>
    </div>
    <blockquote
cite="mid:CAOO-Tt0meQaB4a5EouY_G_85wow65-bTvoaW_tkj3Rnmjgqw_A@mail.gmail.com"
      type="cite">
      <p style="margin-bottom:0cm" lang="en-GB">Hi,</p>
      <p style="margin-bottom:0cm" lang="en-GB">First of
        all: congratulations for completing this new release! As I’m
        dealing with writing a new ROS client library, the first and
        main
        look I took within this release was into Catkin. For what I can
        tell
        up to now, I see some good change here but unfortunately there
        are a
        lot more points I do not like… <br>
      </p>
      <p style="margin-bottom:0cm" lang="en-GB">Let’s
        start with the good thing I see: the messages are now generated
        in
        the user’s workspace, what is really good when looking at adding
        a
        new “language” like rosc, the one I’m working on, where every
        message in every package has to be built for the new language
        which
        wasn't possible if using installed packages before.</p>
      <p style="margin-bottom:0cm" lang="en-GB">Now to the
        critics.</p>
      <p style="margin-bottom:0cm" lang="en-GB">When using
        rosbuild, everything you have to do to create a new language was
        making your language package depended on roslang and adding a
        tag
        which specifies the generator function.</p>
      <p style="margin-bottom:0cm" lang="en-GB">Now it
        seems that you have to create a file inside a special directory
        to
        make the compiler notice that there is a new language,
        unfortunately
        it's a system directory. The message generator (which creates
        the
        same files as before) now uses EmPy instead of just a python
        script.
        I don't have used EmPy so far but I think that's ok. What feels
        weird
        to me is that the generator is generated by another generator
        residing inside genmsg (the base of message generation)
        containing
        language specific details for python and cpp, which I think,
        should
        be only inside gencpp or genpy. Otherwise somebody (like me) who
        wants to write another language add-on has to mess around inside
        basic ros stuff (I really dislike messing around inside a
        doubled
        generator btw). If there is another possibility to add another
        language to the build toolchain, please tell me! It would be
        cool to
        have message stuff automatically generated for different
        languages. Another
        strange thing is, that the build python script for roscpp is
        placed
        in another directory than the templates for it.</p>
      <p style="margin-bottom:0cm" lang="en-GB">I guess the best
        way for message generation would be to stay the old way for
        calling the generator by just
        adding a tag inside the package.xml making it a language package
        instead of defining it on other places and and use the python
        scripts of ROS for reading the message files and merge that with
        the new location in the users workspace. Then
        everybody could add add a new language easily. <br>
      </p>
      <p style="margin-bottom:0cm"><span lang="en-GB">Now
          to the general usability when creating a </span><span
          lang="en-GB">package.</span></p>
      <p style="margin-bottom:0cm" lang="en-GB">When using
        rosbuild and wanting to generate messages (or services), you
        just had
        to remove a comment in front of the generation line. Now instead
        of a
        usability improvement so that it automatically looks for files
        inside the msg/srv directory, you have to specify which
        directory the files reside
        in, each message and additionally the dependency for them. Also
        you
        have to specify each dependency of the package,additionally to
        the
        dependencies inside the package.xml where you have to also add
        some lines for generating messages. This really introduces much
        complexity on the user side and is really uncomfortable for
        creating
        new packages. I think that shouldn't be necessary.<br>
      </p>
      <p style="margin-bottom:0cm" lang="en-GB">Additionally
        the fact that I have to change to the catkin workspace directory
        to
        build one package really annoys me, please make some script
        which
        builds from any package directory or anywhere for the current
        workspace.<br>
      </p>
      <p style="margin-bottom:0cm" lang="en-GB">Btw, what
        general advantage does catkin bring, besides generating messages
        inside users directory? Currently I do not see any other big
        advantage compared to rosbuild. But perhaps I’m blind, so please
        help to see! ;-)</p>
      <p style="margin-bottom:0cm" lang="en-GB">One more
        thing which I’m not quite sure about: is catkin added as a new
        method to build ros packages or shall it completely replace
        rosbuild? Currently
        both seems to be supported somehow in the documentation.</p>
      <p style="margin-bottom:0cm" lang="en-GB">Regards,</p>
      <p style="margin-bottom:0cm" lang="en-GB">Christian
      </p>
      <p style="margin-bottom:0cm" lang="en-GB">Reference:</p>
      <font color="#000080"><span lang="zxx"><u><a
              moz-do-not-send="true"
              href="http://www.ros.org/wiki/ROS/Tutorials/CreatingMsgAndSrv"
              target="_blank"><font color="#000080">h</font>ttp://www.ros.org/wiki/ROS/Tutorials/CreatingMsgAndSrv</a></u></span></font><span
        lang="en-GB"></span><br>
      <span
style="font-size:x-small;font-family:arial,helvetica,sans-serif;color:rgb(128,128,128)"></span><br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
ros-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a>
<a class="moz-txt-link-freetext" href="https://code.ros.org/mailman/listinfo/ros-users">https://code.ros.org/mailman/listinfo/ros-users</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>