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:
When trying to build
vision_msgs
for ROS2 Galactic, I started getting these build errors: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