HKUST-Aerial-Robotics / VINS-Mono

A Robust and Versatile Monocular Visual-Inertial State Estimator
GNU General Public License v3.0
4.84k stars 2.07k forks source link

Failed catkin_make in Ubuntu20.04 #391

Closed ZhangZh3ng closed 2 years ago

ZhangZh3ng commented 2 years ago

I can't copy entire error message there for it is too massive, Is there anyone who successfully catkin_make in Ubuntu20.04? 3%] Building CXX object VINS-Mono-master/camera_model/CMakeFiles/Calibration.dir/src/calib/CameraCalibration.cc.o [ 3%] Building CXX object VINS-Mono-master/camera_model/CMakeFiles/Calibration.dir/src/camera_models/CameraFactory.cc.o [ 4%] Building CXX object VINS-Mono-master/camera_model/CMakeFiles/camera_model.dir/src/camera_models/CostFunctionFactory.cc.o [ 6%] Building CXX object VINS-Mono-master/camera_model/CMakeFiles/camera_model.dir/src/calib/CameraCalibration.cc.o [ 7%] Building CXX object VINS-Mono-master/camera_model/CMakeFiles/camera_model.dir/src/camera_models/CameraFactory.cc.o [ 9%] Building CXX object VINS-Mono-master/camera_model/CMakeFiles/Calibration.dir/src/camera_models/CostFunctionFactory.cc.o [ 12%] Built target benchmark_publisher [ 13%] Building CXX object VINS-Mono-master/vins_estimator/CMakeFiles/vins_estimator.dir/src/estimator_node.cpp.o [ 15%] Building CXX object VINS-Mono-master/vins_estimator/CMakeFiles/vins_estimator.dir/src/initial/initial_aligment.cpp.o [ 16%] Building CXX object VINS-Mono-master/vins_estimator/CMakeFiles/vins_estimator.dir/src/estimator.cpp.o In file included from /usr/local/include/ceres/internal/parameter_dims.h:37, from /usr/local/include/ceres/internal/autodiff.h:151, from /usr/local/include/ceres/autodiff_cost_function.h:130, from /usr/local/include/ceres/ceres.h:37, from /home/zz/桌面/vinsmono/catkin_ws/src/VINS-Mono-master/camera_model/src/calib/CameraCalibration.cc:20: /usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:21: error: ‘integer_sequence’ is not a member of ‘std’ 64 | struct SumImpl<std::integer_sequence<T, N, Ns...>> { | ^~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:21: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:46: error: wrong number of template arguments (3, should be 1) 64 | struct SumImpl<std::integer_sequence<T, N, Ns...>> { | ^~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template struct ceres::internal::SumImpl’ 60 | struct SumImpl; | ^~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:49: error: expected unqualified-id before ‘>’ token 64 | struct SumImpl<std::integer_sequence<T, N, Ns...>> { | ^~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:71:21: error: ‘integer_sequence’ is not a member of ‘std’ 71 | struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> { | ^~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:71:21: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:71:51: error: wrong number of template arguments (4, should be 1) 71 | struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> { | ^~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template struct ceres::internal::SumImpl’ 60 | struct SumImpl; | ^~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:71:54: error: expected unqualified-id before ‘>’ token 71 | struct SumImpl<std::integer_sequence<T, N1, N2, Ns...>> { | ^~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:78:21: error: ‘integer_sequence’ is not a member of ‘std’ 78 | struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> { | ^~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:78:21: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:78:59: error: wrong number of template arguments (6, should be 1) 78 | struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> { | ^~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template struct ceres::internal::SumImpl’ 60 | struct SumImpl; | ^~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:78:62: error: expected unqualified-id before ‘>’ token 78 | struct SumImpl<std::integer_sequence<T, N1, N2, N3, N4, Ns...>> { | ^~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:85:21: error: ‘integer_sequence’ is not a member of ‘std’ 85 | struct SumImpl<std::integer_sequence<T, N>> { | ^~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:85:21: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:85:41: error: wrong number of template arguments (2, should be 1) 85 | struct SumImpl<std::integer_sequence<T, N>> { | ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template struct ceres::internal::SumImpl’ 60 | struct SumImpl; | ^~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:85:42: error: expected unqualified-id before ‘>’ token 85 | struct SumImpl<std::integer_sequence<T, N>> { | ^~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:91:21: error: ‘integer_sequence’ is not a member of ‘std’ 91 | struct SumImpl<std::integer_sequence> { | ^~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:91:21: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:91:38: error: template argument 1 is invalid 91 | struct SumImpl<std::integer_sequence> { | ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:91:39: error: expected unqualified-id before ‘>’ token 91 | struct SumImpl<std::integer_sequence> { | ^~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:135:31: error: ‘integer_sequence’ is not a member of ‘std’ 135 | std::integer_sequence<T, N, Ns...>, | ^~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:135:31: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:135:59: error: template argument 3 is invalid 135 | std::integer_sequence<T, N, Ns...>, | ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:135:59: error: type/value mismatch at argument 4 in template parameter list for ‘template<class T, T Sum, class SeqIn, class SeqOut> struct ceres::internal::ExclusiveScanImpl’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:135:59: note: expected a type, got ‘N’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:146:39: error: ‘integer_sequence’ is not a member of ‘std’ 146 | struct ExclusiveScanImpl<T, Sum, std::integer_sequence, SeqOut> { | ^~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:146:39: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:146:57: error: wrong number of template arguments (3, should be 4) 146 | struct ExclusiveScanImpl<T, Sum, std::integer_sequence, SeqOut> { | ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:130:8: note: provided for ‘template<class T, T Sum, class SeqIn, class SeqOut> struct ceres::internal::ExclusiveScanImpl’ 130 | struct ExclusiveScanImpl; | ^~~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:53: error: ‘integer_sequence’ is not a member of ‘std’ 160 | typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence>::Type; | ^~~~ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:53: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:70: error: template argument 4 is invalid 160 | typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence>::Type; | ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:160:16: error: expected nested-name-specifier 160 | typename ExclusiveScanImpl<T, T(0), Seq, std::integer_sequence>::Type; | ^~~~~~~~~~~~~~~ In file included from /usr/local/include/ceres/internal/autodiff.h:151, from /usr/local/include/ceres/autodiff_cost_function.h:130, from /usr/local/include/ceres/ceres.h:37, from /home/zz/桌面/vinsmono/catkin_ws/src/VINS-Mono-master/camera_model/src/calib/CameraCalibration.cc:20: /usr/local/include/ceres/internal/parameter_dims.h:44:55: error: ‘integer_sequence’ is not a member of ‘std’ 44 | constexpr bool IsValidParameterDimensionSequence(std::integer_sequence) { | ^~~~ /usr/local/include/ceres/internal/parameter_dims.h:44:72: error: expected primary-expression before ‘int’ 44 | constexpr bool IsValidParameterDimensionSequence(std::integer_sequence) { | ^~~ /usr/local/include/ceres/internal/parameter_dims.h:50:10: error: ‘template<int N, int ...Ts> constexpr const bool ceres::internal::IsValidParameterDimensionSequence’ redeclared as different kind of entity 50 | std::integer_sequence<int, N, Ts...>) { | ^~~~ /usr/local/include/ceres/internal/parameter_dims.h:44:16: note: previous declaration ‘constexpr const bool ceres::internal::IsValidParameterDimensionSequence’ 44 | constexpr bool IsValidParameterDimensionSequence(std::integer_sequence) { | ^~~~~~~~~

ZhangZh3ng commented 2 years ago

I have found the solution. Errors' reason is I installed a higher version Ceres library(v2.0.0), and Ceres v2.0.0 needs c++14 std rather than c++11. Just replace c++11 with c++14 in all CMakeFiles.txt.

Eddy202208 commented 1 year ago

Where is CmakeFiles.txt ?