Hello Sameer,
The build fails with Visual Studio 2010 :
- due to partial C++11 support.
- has an error with TBB 4.3
Partial log (without tbb activated) :
cmake log :
[...]
-- Building with OpenMP.
-- Performing Test COMPILER_HAS_CXX11_FLAG
-- Performing Test COMPILER_HAS_CXX11_FLAG - Failed
-- Looking for C++ include unordered_map
-- Looking for C++ include unordered_map - found
-- Performing Test HAVE_UNORDERED_MAP_IN_STD_NAMESPACE
-- Performing Test HAVE_UNORDERED_MAP_IN_STD_NAMESPACE - Success
-- Found unordered_map/set in std namespace.
-- Looking for C++ include memory
-- Looking for C++ include memory - found
-- Performing Test HAVE_SHARED_PTR_IN_STD_NAMESPACE
-- Performing Test HAVE_SHARED_PTR_IN_STD_NAMESPACE - Success
-- Found shared_ptr in std namespace using <memory> header.
==============================================================
Compiling Ceres using C++11. This will result in a version
of Ceres that will require the use of C++11 in client code.
==============================================================
-- Building Ceres as a static library.
-- No build type specified; defaulting to CMAKE_BUILD_TYPE=Release.
-- Performing Test HAVE_UNDERSCORE_PREFIXED_BESSEL_FUNCTIONS
-- Performing Test HAVE_UNDERSCORE_PREFIXED_BESSEL_FUNCTIONS - Success
-- Creating configured Ceres config.h output directory: D:/Jenkins/workspace/Ceres-Solver/Ceres-Solver-windows-x86/ceres-solver/build/config/ceres/internal
-- Enabling CERES_USE_EIGEN_SPARSE in Ceres config.h
-- Enabling CERES_USE_CXX11 in Ceres config.h
[...]
build log :
array_utils.cc
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/internal/port.h(84): error C2146: syntax error : missing ';' before identifier 'size_t' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/internal/port.h(84): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/internal/port.h(91): error C2039: 'max_align_t' : is not a member of 'std' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/internal/port.h(91): error C2065: 'max_align_t' : undeclared identifier [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/internal/port.h(91): error C3861: 'alignof': identifier not found [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
[...]
occurring for all files that includes port.h (278 times),
constexpr,
alignof and
std::max_align_t are not supported by VS2010
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(273): error C2144: syntax error : 'int' should be preceded by ';' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(298) : see reference to class template instantiation 'ceres::Jet<T,N>' being compiled
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(273): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(273): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(275): error C2864: 'ceres::Jet<T,N>::kAlignOrNot' : only static const integral data members can be initialized within a class [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(293): error C2146: syntax error : missing ';' before identifier 'size_t' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(293): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(293): error C2086: 'int ceres::Jet<T,N>::constexpr' : redefinition [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(273) : see declaration of 'ceres::Jet<T,N>::constexpr'
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(293): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(294): error C2864: 'ceres::Jet<T,N>::kAlignment' : only static const integral data members can be initialized within a class [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(296): error C2061: syntax error : identifier 'kAlignment' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(296): error C2975: '_Options' : invalid template argument for 'Eigen::Matrix', expected compile-time constant expression [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
d:\jenkins\workspace\ceres-solver\ceres-solver-windows-x86\eigen3\eigen\src/Core/Matrix.h(126) : see declaration of '_Options'
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(296): error C2143: syntax error : missing ';' before 'Eigen::Matrix<T,N,1,0>' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(296): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(296): warning C4183: 'alignas': missing return type; assumed to be a member function returning 'int' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
same as before : constexpr is not supported by VS2010
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(451): error C2039: 'cbrt' : is not a member of 'std' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(452): error C2039: 'exp2' : is not a member of 'std' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(453): error C2039: 'log2' : is not a member of 'std' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(454): error C2039: 'hypot' : is not a member of 'std' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(455): error C2039: 'fmax' : is not a member of 'std' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]
D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\include\ceres/jet.h(456): error C2039: 'fmin' : is not a member of 'std' [D:\Jenkins\workspace\Ceres-Solver\Ceres-Solver-windows-x86\ceres-solver\build\internal\ceres\ceres.vcxproj]std::cbrt, std::exp2, std::log2, std::hypot, std::fmax, fmin are not supported by VS2010
for TBB 4.3 errors :
error C2668: 'ceres::internal::ParallelFor' : ambiguous call to overloaded function C:\SVN\ceres-solver-1.14.0\internal\ceres\coordinate_descent_minimizer.cc 222 1
error C2660: 'ceres::Solve' : function does not take 4 arguments C:\SVN\ceres-solver-1.14.0\internal\ceres\coordinate_descent_minimizer.cc 214 1
[...]
error C1083: Cannot open include file: 'atomic': No such file or directory C:\SVN\ceres-solver-1.14.0\internal\ceres\program_evaluator.h 100 1
[...]
error C2899: typename cannot be used outside a template declaration C:\SVN\ceres-solver-1.14.0\internal\ceres\schur_eliminator_impl.h 211 1
[...]
and many more...
However we planned to upgrade to VS2017 in the next few month, so C++11 requirement will not be a problem for us.