Questions on ament, ament.py, ament_cmake and dependency resolvers

Yes, using the COMPONENTS keyword when finding catkin to enumerate additional packages has several drawbacks and was therefore not provided in ament_cmake.

To maintain a similar level of convenience as in catkin you can call ament_target_dependencies(…) after finding all packages separately. The function will do the “heavy lifting” for you and “use” all common variables from the package names you pass for the passed target name.

It does exactly what you described - it builds only the single one package. It does not build any other packages. You should use build for that. build_pkg should commonIy not be used by users.

ROS 2 uses rosdep the same as ROS 1 does.