ros-perception / vision_msgs

Algorithm-agnostic computer vision message types for ROS.
Apache License 2.0
157 stars 75 forks source link

Patch for how C++14 is set for ROS2 #58

Closed dusty-nv closed 3 years ago

dusty-nv commented 3 years ago

When trying to build vision_msgs for ROS2 Galactic, I started getting these build errors:

--- stderr: vision_msgs
In file included from /opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/detail/bounding_box2_d__struct.hpp:8:0,
                 from /opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/bounding_box2_d.hpp:7,
                 from /opt/ros/galactic/src/vision_msgs/test/main.cpp:17:
/opt/ros/galactic/install/rosidl_runtime_cpp/include/rosidl_runtime_cpp/bounded_vector.hpp:478:32: error: ‘emplace_back’ function uses ‘auto’ type specifier without trailing return type
   emplace_back(Args && ... args)
                                ^
/opt/ros/galactic/install/rosidl_runtime_cpp/include/rosidl_runtime_cpp/bounded_vector.hpp:478:32: note: deduced return type only available with -std=c++14 or -std=gnu++14
In file included from /opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/bounding_box2_d.hpp:8:0,
                 from /opt/ros/galactic/src/vision_msgs/test/main.cpp:17:
/opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/detail/bounding_box2_d__builder.hpp:76:12: error: ‘build’ function uses ‘auto’ type specifier without trailing return type
 auto build();
            ^
/opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/detail/bounding_box2_d__builder.hpp:76:12: note: deduced return type only available with -std=c++14 or -std=gnu++14
/opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/detail/bounding_box2_d__builder.hpp:80:47: error: ‘build’ function uses ‘auto’ type specifier without trailing return type
 auto build<::vision_msgs::msg::BoundingBox2D>()
                                               ^
/opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/detail/bounding_box2_d__builder.hpp:80:47: note: deduced return type only available with -std=c++14 or -std=gnu++14
In file included from /opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/bounding_box3_d.hpp:8:0,
                 from /opt/ros/galactic/src/vision_msgs/test/main.cpp:18:
/opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/detail/bounding_box3_d__builder.hpp:60:12: error: ‘build’ function uses ‘auto’ type specifier without trailing return type
 auto build();
            ^
/opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/detail/bounding_box3_d__builder.hpp:60:12: note: deduced return type only available with -std=c++14 or -std=gnu++14
/opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/detail/bounding_box3_d__builder.hpp:64:47: error: ‘build’ function uses ‘auto’ type specifier without trailing return type
 auto build<::vision_msgs::msg::BoundingBox3D>()
                                               ^
/opt/ros/galactic/build/vision_msgs/rosidl_generator_cpp/vision_msgs/msg/detail/bounding_box3_d__builder.hpp:64:47: note: deduced return type only available with -std=c++14 or -std=gnu++14
make[2]: *** [CMakeFiles/vision_msgs_test.dir/test/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/vision_msgs_test.dir/all] Error 2
make: *** [all] Error 2
---
Failed   <<< vision_msgs [1min 29s, exited with code 2]

I found this could be fixed by setting C++14 the way it is recommended to be done in the ROS2 documentation:

https://docs.ros.org/en/foxy/Contributing/Migration-Guide.html#changing-the-cmake-code

SteveMacenski commented 3 years ago

LGTM

Kukanani commented 3 years ago

Thanks for the clean PR!