ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Collecting relevant comments from the answer from @janindu :

This loop in genmsg invokes all available generators which are on their own create their targets: https://github.com/ros/genmsg/blob/f9dad2f897fc9bafec038ed8a74986ba766e9e9d/cmake/pkg-genmsg.cmake.em#L86-L132

--- dirk-thomas

Generators essentially register as plugins against genmsg using a message_generator tag in the export section of their manifests.

--- gvdhoorn

With regard to the enumeration of packages that provide language generators, this is entirely dependent on which packages are present; for most catkin workspaces, this is a function rosdep and any package.xml files present.

However, for the _common case_ where a given project depends on the message_generation package, the following generators are dependencies thereof and guaranteed to be present:

  • https://wiki.ros.org/gencpp
  • https://wiki.ros.org/geneus
  • https://wiki.ros.org/genlisp
  • https://wiki.ros.org/gennodejs
  • https://wiki.ros.org/genpy

In this case, the generate_messages macro provided by genmsg will understand (eponymous) LANG option arguments for each of these five generators.

References:

  • https://wiki.ros.org/message_generation?distro=kinetic
  • https://wiki.ros.org/message_generation?distro=lunar
  • https://wiki.ros.org/message_generation?distro=melodic

Much thanks to @janindu, @gvdhoorn, and @dirk-thomas for all your help.

Collecting relevant comments from the answer from @janindu :

This loop in genmsg invokes all available generators which are on their own create their targets: https://github.com/ros/genmsg/blob/f9dad2f897fc9bafec038ed8a74986ba766e9e9d/cmake/pkg-genmsg.cmake.em#L86-L132

--- dirk-thomas

Generators essentially register as plugins against genmsg using a message_generator tag in the export section of their manifests.

--- gvdhoorn

With regard to the enumeration of packages that provide language generators, this is entirely dependent on which packages are present; for most catkin workspaces, this is a function rosdep and any package.xml files present.

However, for the _common case_ where a given project depends on the message_generation package, the following generators are dependencies thereof and guaranteed to be present:

  • https://wiki.ros.org/gencpp
  • https://wiki.ros.org/geneus
  • https://wiki.ros.org/genlisp
  • https://wiki.ros.org/gennodejs
  • https://wiki.ros.org/genpy

In this case, the generate_messages macro provided by genmsg will understand (eponymous) LANGLANGS option arguments for each of these five generators.

References:

  • https://wiki.ros.org/message_generation?distro=kinetic
  • https://wiki.ros.org/message_generation?distro=lunar
  • https://wiki.ros.org/message_generation?distro=melodic

Much thanks to @janindu, @gvdhoorn, and @dirk-thomas for all your help.

Collecting relevant comments from the answer from @janindu :

This loop in genmsg invokes all available generators which are on their own create their targets: https://github.com/ros/genmsg/blob/f9dad2f897fc9bafec038ed8a74986ba766e9e9d/cmake/pkg-genmsg.cmake.em#L86-L132

--- dirk-thomas

Generators essentially register as plugins against genmsg using a message_generator tag in the export section of their manifests.

--- gvdhoorn

With regard to the enumeration of packages that provide language generators, this is entirely dependent on which packages are present; for most catkin workspaces, this is a function rosdep and any package.xml files present.

However, for the _common case_ common case where a given project depends on the message_generation package, the following generators are dependencies thereof and guaranteed to be present:

  • https://wiki.ros.org/gencpp
  • https://wiki.ros.org/geneus
  • https://wiki.ros.org/genlisp
  • https://wiki.ros.org/gennodejs
  • https://wiki.ros.org/genpy

In this case, the generate_messages macro provided by genmsg will understand (eponymous) LANGS option arguments for each of these five generators.

References:

  • https://wiki.ros.org/message_generation?distro=kinetic
  • https://wiki.ros.org/message_generation?distro=lunar
  • https://wiki.ros.org/message_generation?distro=melodic

Much thanks to @janindu, @gvdhoorn, and @dirk-thomas for all your help.