isl-org / Open3D

Open3D: A Modern Library for 3D Data Processing
http://www.open3d.org
Other
11.46k stars 2.31k forks source link

Current progress of building Open3D. #5405

Open jiapei-nexera opened 2 years ago

jiapei-nexera commented 2 years ago

Checklist

Steps to reproduce the issue

Just provide a summary of current Open3D**'s issues:

  1. compatibility of fmt-9 . It looks a lot of utility::LogError() is buggy. For instance: LIne 103~104 of file NPPImage.cpp. A very tough one is : TensorMap.cpp
  2. a variety of bugs may be originiated from poisson-recon itself, which is heavily adopted in SurfaceReconstructionPoisson.cpp
  3. Refer to https://github.com/isl-org/Open3D/issues/5353**
  4. There is a duplicated definition (constructor) in file FilamentCamera.cpp
  5. NOT compatible for c++20, but c++17 ONLY. For instance: std::is_pod() is DEPRECATED in c++20.
  6. OpenSSL 3 issue. Even if I defined -DOPENSSL_NO_DEPRECATED_3_0 for compiling, I still obtained ERROR messages.

Error message

1. **fmt**:
............
....../Open3D/cpp/open3d/t/geometry/TensorMap.cpp:67:17: error: ignoring return value of function declared with 'nodiscard' attribute [-Werror,-Wunused-result]
                fmt::format("    > Tensor \"{}\" has size {}.\n", kv.first,
                ^~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
............
....../Open3D/cpp/open3d/t/geometry/kernel/NPPImage.cpp:136:18:   required from here
/usr/local/include/fmt/core.h:1751:7: error: static assertion failed: Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt
 1751 |       formattable,
      |       ^~~~~~~~~~~
/usr/local/include/fmt/core.h:1751:7: note: ‘formattable’ evaluates to false
............
....../Open3D/cpp/open3d/t/io/sensor/realsense/RealSenseSensorConfig.cpp:274:18:   required from here
/usr/local/include/fmt/core.h:1751:7: error: static assertion failed: Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt
 1751 |       formattable,
      |       ^~~~~~~~~~~
/usr/local/include/fmt/core.h:1751:7: note: ‘formattable’ evaluates to false
............
......Open3D/cpp/open3d/t/geometry/VtkUtils.cpp:387:18:   required from here
/usr/local/include/fmt/core.h:1751:7: error: static assertion failed: Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt
 1751 |       formattable,
      |       ^~~~~~~~~~~
/usr/local/include/fmt/core.h:1751:7: note: ‘formattable’ evaluates to false
............

2. **poisson-recon**:
```console

....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:107:38: error: expected template-name before ‘<’ token
  107 |     : public InputPointStreamWithData<Real, DIMENSION, Open3DData> {
      |                                      ^
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:107:38: error: expected ‘{’ before ‘<’ token
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:267:36: error: ‘InputPointStream’ was not declared in this scope; did you mean ‘InputDataStream’?
  267 | XForm<Real, Dim + 1> GetPointXForm(InputPointStream<Real, Dim>& stream,
      |                                    ^~~~~~~~~~~~~~~~
      |                                    InputDataStream
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:267:57: error: expected primary-expression before ‘,’ token
  267 | XForm<Real, Dim + 1> GetPointXForm(InputPointStream<Real, Dim>& stream,
      |                                                         ^
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:267:65: error: ‘stream’ was not declared in this scope; did you mean ‘std::io_errc::stream’?
  267 | XForm<Real, Dim + 1> GetPointXForm(InputPointStream<Real, Dim>& stream,
      |                                                                 ^~~~~~
      |                                                                 std::io_errc::stream
In file included from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/eigen3/Eigen/Core:50,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:27:
/usr/include/c++/11/bits/ios_base.h:203:24: note: ‘std::io_errc::stream’ declared here
  203 |   enum class io_errc { stream = 1 };
      |                        ^~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:268:41: error: expected primary-expression before ‘width’
  268 |                                    Real width,
      |                                         ^~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:269:41: error: expected primary-expression before ‘scaleFactor’
  269 |                                    Real scaleFactor,
      |                                         ^~~~~~~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:270:36: error: expected primary-expression before ‘int’
  270 |                                    int& depth) {
      |                                    ^~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:270:47: error: expected ‘;’ before ‘{’ token
  270 |                                    int& depth) {
      |                                               ^~
      |                                               ;
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:277:22: error: redefinition of ‘template<class Real, unsigned int Dim> XForm<Real, (Dim + 1)> open3d::geometry::poisson::GetPointXForm’
  277 | XForm<Real, Dim + 1> GetPointXForm(InputPointStream<Real, Dim>& stream,
      |                      ^~~~~~~~~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:267:22: note: ‘template<class Real, unsigned int Dim> XForm<Real, (Dim + 1)> open3d::geometry::poisson::GetPointXForm<Real, Dim>’ previously declared here
  267 | XForm<Real, Dim + 1> GetPointXForm(InputPointStream<Real, Dim>& stream,
      |                      ^~~~~~~~~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:277:36: error: ‘InputPointStream’ was not declared in this scope; did you mean ‘InputDataStream’?
  277 | XForm<Real, Dim + 1> GetPointXForm(InputPointStream<Real, Dim>& stream,
      |                                    ^~~~~~~~~~~~~~~~
      |                                    InputDataStream
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:277:57: error: expected primary-expression before ‘,’ token
  277 | XForm<Real, Dim + 1> GetPointXForm(InputPointStream<Real, Dim>& stream,
      |                                                         ^
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:277:65: error: ‘stream’ was not declared in this scope; did you mean ‘std::io_errc::stream’?
  277 | XForm<Real, Dim + 1> GetPointXForm(InputPointStream<Real, Dim>& stream,
      |                                                                 ^~~~~~
      |                                                                 std::io_errc::stream
In file included from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/eigen3/Eigen/Core:50,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:27:
/usr/include/c++/11/bits/ios_base.h:203:24: note: ‘std::io_errc::stream’ declared here
  203 |   enum class io_errc { stream = 1 };
      |                        ^~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:278:41: error: expected primary-expression before ‘scaleFactor’
  278 |                                    Real scaleFactor) {
      |                                         ^~~~~~~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp: In instantiation of ‘void open3d::geometry::poisson::Execute(const open3d::geometry::PointCloud&, std::shared_ptr<open3d::geometry::TriangleMesh>&, std::vector<double>&, int, float, float, bool, UIntPack<CSignatures ...>) [with Real = float; SampleData = {}; unsigned int ...FEMSigs = {5, 5, 5}]’:
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:768:28:   required from here
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:468:33: error: ‘open3d::geometry::poisson::Open3DPointStream<float> pointStream’ has incomplete type
  468 |         Open3DPointStream<Real> pointStream(&pcd);
      |                                 ^~~~~~~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:528:30: error: no matching function for call to ‘FEMTree<3, float>::resetNodeIndices()’
  528 |         tree.resetNodeIndices();
      |         ~~~~~~~~~~~~~~~~~~~~~^~
In file included from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:51:
/usr/local/include/PoissonRecon/Src/FEMTree.h:2493:25: note: candidate: ‘template<class ... DenseOrSparseNodeData> node_index_type FEMTree<Dim, Real>::resetNodeIndices(char, std::tuple<InterpolationInfos* ...>) [with DenseOrSparseNodeData = {DenseOrSparseNodeData ...}; unsigned int Dim = 3; Real = float]’
 2493 |         node_index_type resetNodeIndices( char flagsToClear , std::tuple< DenseOrSparseNodeData *... > data )
      |                         ^~~~~~~~~~~~~~~~
/usr/local/include/PoissonRecon/Src/FEMTree.h:2493:25: note:   template argument deduction/substitution failed:
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:528:30: note:   candidate expects 2 arguments, 0 provided
  528 |         tree.resetNodeIndices();
      |         ~~~~~~~~~~~~~~~~~~~~~^~
In file included from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:51:
/usr/local/include/PoissonRecon/Src/FEMTree.h:2520:25: note: candidate: ‘node_index_type FEMTree<Dim, Real>::resetNodeIndices(char) [with unsigned int Dim = 3; Real = float; node_index_type = int]’
 2520 |         node_index_type resetNodeIndices( char flagsToClear ){ return resetNodeIndices( flagsToClear , std::make_tuple() ); }
      |                         ^~~~~~~~~~~~~~~~
/usr/local/include/PoissonRecon/Src/FEMTree.h:2520:25: note:   candidate expects 1 argument, 0 provided
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:533:71: error: no matching function for call to ‘FEMTree<3, float>::setDensityEstimator<open3d::geometry::poisson::WEIGHT_DEGREE>(std::vector<NodeAndPointSample<3, float>, std::allocator<NodeAndPointSample<3, float> > >&, int&, float&, int)’
  533 |             density = tree.template setDensityEstimator<WEIGHT_DEGREE>(
      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
  534 |                     samples, kernelDepth, samples_per_node, 1);
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
In file included from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:51:
/usr/local/include/PoissonRecon/Src/FEMTree.h:2204:71: note: candidate: ‘template<unsigned int CoDim, unsigned int DensityDegree> FEMTree<Dim, Real>::DensityEstimator<DensityDegree>* FEMTree<Dim, Real>::setDensityEstimator(const std::vector<NodeAndPointSample<Dim, Real> >&, FEMTree<Dim, Real>::LocalDepth, Real) [with unsigned int CoDim = CoDim; unsigned int DensityDegree = DensityDegree; unsigned int Dim = 3; Real = float]’
 2204 |         typename FEMTree::template DensityEstimator< DensityDegree >* setDensityEstimator( const std::vector< PointSample >& samples , LocalDepth splatDepth , Real samplesPerNode );
      |                                                                       ^~~~~~~~~~~~~~~~~~~
/usr/local/include/PoissonRecon/Src/FEMTree.h:2204:71: note:   template argument deduction/substitution failed:
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:533:71: note:   candidate expects 3 arguments, 4 provided
  533 |             density = tree.template setDensityEstimator<WEIGHT_DEGREE>(
      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
  534 |                     samples, kernelDepth, samples_per_node, 1);
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:574:36: error: ‘class FEMTree<3, float>’ has no member named ‘setDataField’
  574 |                 *normalInfo = tree.setDataField(
      |                               ~~~~~^~~~~~~~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:578:36: error: ‘class FEMTree<3, float>’ has no member named ‘setDataField’
  578 |                 *normalInfo = tree.setDataField(
      |                               ~~~~~^~~~~~~~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:597:59: error: no matching function for call to ‘FEMTree<3, float>::finalizeForMultigrid<MAX_DEGREE>(int&, FEMTree<3, float>::HasNormalDataFunctor<UIntPack<7, 7, 7> >, SparseNodeData<Point<float, 3>, UIntPack<7, 7, 7> >*&, DensityEstimator*&)’
  597 |             tree.template finalizeForMultigrid<MAX_DEGREE>(
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
  598 |                     full_depth,
      |                     ~~~~~~~~~~~                            
  599 |                     typename FEMTree<Dim, Real>::template HasNormalDataFunctor<
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  600 |                             NormalSigs>(*normalInfo),
      |                             ~~~~~~~~~~~~~~~~~~~~~~~~~      
  601 |                     normalInfo, density);
      |                     ~~~~~~~~~~~~~~~~~~~~                   
In file included from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:51:
/usr/local/include/PoissonRecon/Src/FEMTree.h:2217:208: note: candidate: ‘template<unsigned int MaxDegree, unsigned int SystemDegree, class HasDataFunctor, class IsDirichletLeafFunctor, class ... InterpolationInfos, class ... DenseOrSparseNodeData> void FEMTree<Dim, Real>::finalizeForMultigrid(FEMTree<Dim, Real>::LocalDepth, FEMTree<Dim, Real>::LocalDepth, HasDataFunctor, IsDirichletLeafFunctor, std::tuple<InterpolationInfos* ...>, std::tuple<InterpolationInfos* ...>) [with unsigned int MaxDegree = MaxDegree; unsigned int SystemDegree = SystemDegree; HasDataFunctor = HasDataFunctor; IsDirichletLeafFunctor = IsDirichletLeafFunctor; InterpolationInfos = {InterpolationInfos ...}; DenseOrSparseNodeData = {DenseOrSparseNodeData ...}; unsigned int Dim = 3; Real = float]’
 2217 |         template< unsigned int MaxDegree , unsigned int SystemDegree , typename HasDataFunctor , typename IsDirichletLeafFunctor , typename ... InterpolationInfos , typename ... DenseOrSparseNodeData > void finalizeForMultigrid( LocalDepth baseDepth , LocalDepth fullDepth , const HasDataFunctor hasData , const IsDirichletLeafFunctor isDirichletLeaf , std::tuple< InterpolationInfos *... > interpolationInfos , std::tuple< DenseOrSparseNodeData *... > data );
      |                                                                                                                                                                                                                ^~~~~~~~~~~~~~~~~~~~
/usr/local/include/PoissonRecon/Src/FEMTree.h:2217:208: note:   template argument deduction/substitution failed:
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:597:59: note:   candidate expects 6 arguments, 4 provided
  597 |             tree.template finalizeForMultigrid<MAX_DEGREE>(
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
  598 |                     full_depth,
      |                     ~~~~~~~~~~~                            
  599 |                     typename FEMTree<Dim, Real>::template HasNormalDataFunctor<
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  600 |                             NormalSigs>(*normalInfo),
      |                             ~~~~~~~~~~~~~~~~~~~~~~~~~      
  601 |                     normalInfo, density);
      |                     ~~~~~~~~~~~~~~~~~~~~                   
In file included from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:51:
/usr/local/include/PoissonRecon/Src/FEMTree.h:2218:208: note: candidate: ‘template<unsigned int MaxDegree, unsigned int SystemDegree, class HasDataFunctor, class IsDirichletLeafFunctor, class ... InterpolationInfos> void FEMTree<Dim, Real>::finalizeForMultigrid(FEMTree<Dim, Real>::LocalDepth, FEMTree<Dim, Real>::LocalDepth, HasDataFunctor, IsDirichletLeafFunctor, std::tuple<InterpolationInfos* ...>) [with unsigned int MaxDegree = MaxDegree; unsigned int SystemDegree = SystemDegree; HasDataFunctor = HasDataFunctor; IsDirichletLeafFunctor = IsDirichletLeafFunctor; InterpolationInfos = {InterpolationInfos ...}; unsigned int Dim = 3; Real = float]’
 2218 |         template< unsigned int MaxDegree , unsigned int SystemDegree , typename HasDataFunctor , typename IsDirichletLeafFunctor , typename ... InterpolationInfos                                      > void finalizeForMultigrid( LocalDepth baseDepth , LocalDepth fullDepth , const HasDataFunctor hasData , const IsDirichletLeafFunctor isDirichletLeaf , std::tuple< InterpolationInfos *... > interpolationInfos ){ finalizeForMultigrid< MaxDegree , SystemDegree , HasDataFunctor >( baseDepth , fullDepth , hasData , isDirichletLeaf , interpolationInfos , std::make_tuple() ); }
      |                                                                                                                                                                                                                ^~~~~~~~~~~~~~~~~~~~
/usr/local/include/PoissonRecon/Src/FEMTree.h:2218:208: note:   template argument deduction/substitution failed:
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:597:59: note:   candidate expects 5 arguments, 4 provided
  597 |             tree.template finalizeForMultigrid<MAX_DEGREE>(
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
  598 |                     full_depth,
      |                     ~~~~~~~~~~~                            
  599 |                     typename FEMTree<Dim, Real>::template HasNormalDataFunctor<
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  600 |                             NormalSigs>(*normalInfo),
      |                             ~~~~~~~~~~~~~~~~~~~~~~~~~      
  601 |                     normalInfo, density);
      |                     ~~~~~~~~~~~~~~~~~~~~                   
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:631:9: error: deleting object of polymorphic class type ‘SparseNodeData<Point<float, 3>, UIntPack<7, 7, 7> >’ which has non-virtual destructor might cause undefined behavior [-Werror=delete-non-virtual-dtor]
  631 |         delete normalInfo, normalInfo = NULL;
      |         ^~~~~~~~~~~~~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:658:45: error: no matching function for call to ‘FEMTree<3, float>::addInterpolationConstraints(DenseNodeData<float, UIntPack<5, 5, 5> >&, int&, InterpolationInfo&)’
  658 |             tree.addInterpolationConstraints(constraints, solveDepth, *iInfo);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:51:
/usr/local/include/PoissonRecon/Src/FEMTree.h:2281:14: note: candidate: ‘template<class T, unsigned int ...FEMSigs, class ... InterpolationInfos> void FEMTree<Dim, Real>::addInterpolationConstraints(DenseNodeData<C, UIntPack<__Values ...> >&, FEMTree<Dim, Real>::LocalDepth, std::tuple<InterpolationInfos* ...>) const [with T = T; unsigned int ...FEMSigs = {FEMSigs ...}; InterpolationInfos = {InterpolationInfos ...}; unsigned int Dim = 3; Real = float]’
 2281 |         void addInterpolationConstraints( DenseNodeData< T , UIntPack< FEMSigs ... > >& constraints , LocalDepth maxDepth , std::tuple< InterpolationInfos *... > interpolationInfos ) const { return _addInterpolationConstraints< 0 >( constraints , maxDepth , interpolationInfos ); }
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/PoissonRecon/Src/FEMTree.h:2281:14: note:   template argument deduction/substitution failed:
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:658:45: note:   ‘FEMTree<3, float>::InterpolationInfo<float, 0>’ is not derived from ‘std::tuple<InterpolationInfos* ...>’
  658 |             tree.addInterpolationConstraints(constraints, solveDepth, *iInfo);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:680:19: error: ‘struct FEMTree<3, float>::SolverInfo’ has no member named ‘baseDepth’
  680 |             sInfo.baseDepth = base_depth, sInfo.baseVCycles = base_v_cycles;
      |             ~~~~~~^~~~~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:684:40: error: no matching function for call to ‘FEMTree<3, float>::solveSystem(Sigs, FEMIntegrator::System<UIntPack<5, 5, 5>, UIntPack<1, 1, 1> >&, DenseNodeData<float, UIntPack<5, 5, 5> >&, int&, FEMTree<3, float>::SolverInfo&, InterpolationInfo*&)’
  684 |             solution = tree.solveSystem(Sigs(), F, constraints, solveDepth,
      |                        ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  685 |                                         sInfo, iInfo);
      |                                         ~~~~~~~~~~~~~
In file included from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:51:
/usr/local/include/PoissonRecon/Src/FEMTree.h:2461:14: note: candidate: ‘template<unsigned int ...FEMSigs, class T, class TDotT, class ... InterpolationInfos> void FEMTree<Dim, Real>::solveSystem(UIntPack<Begin ...>, BaseFEMIntegrator::System<UIntPack<FEMSignature<FEMSigs>::Degree ...> >&, const DenseNodeData<T, UIntPack<Begin ...> >&, DenseNodeData<T, UIntPack<Begin ...> >&, TDotT, FEMTree<Dim, Real>::LocalDepth, const FEMTree<Dim, Real>::SolverInfo&, std::tuple<InterpolationInfos* ...>) const [with unsigned int ...FEMSigs = {FEMSigs ...}; T = T; TDotT = TDotT; InterpolationInfos = {InterpolationInfos ...}; unsigned int Dim = 3; Real = float]’
 2461 |         void solveSystem( UIntPack< FEMSigs ... > , typename BaseFEMIntegrator::template System< UIntPack< FEMSignature< FEMSigs >::Degree ... > >& F , const DenseNodeData< T , UIntPack< FEMSigs ... > >& constraints , DenseNodeData< T , UIntPack< FEMSigs ... > >& solution , TDotT Dot , LocalDepth maxSolveDepth , const SolverInfo& solverInfo , std::tuple< InterpolationInfos *... > interpolationInfos=std::make_tuple() ) const;
      |              ^~~~~~~~~~~
/usr/local/include/PoissonRecon/Src/FEMTree.h:2461:14: note:   template argument deduction/substitution failed:
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:684:40: note:   mismatched types ‘DenseNodeData<T, UIntPack<V1 ...> >’ and ‘int’
  684 |             solution = tree.solveSystem(Sigs(), F, constraints, solveDepth,
      |                        ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  685 |                                         sInfo, iInfo);
      |                                         ~~~~~~~~~~~~~
In file included from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:51:
/usr/local/include/PoissonRecon/Src/FEMTree.h:2463:54: note: candidate: ‘template<unsigned int ...FEMSigs, class T, class TDotT, class ... InterpolationInfos> DenseNodeData<T, UIntPack<Begin ...> > FEMTree<Dim, Real>::solveSystem(UIntPack<Begin ...>, BaseFEMIntegrator::System<UIntPack<FEMSignature<FEMSigs>::Degree ...> >&, const DenseNodeData<T, UIntPack<Begin ...> >&, TDotT, FEMTree<Dim, Real>::LocalDepth, const FEMTree<Dim, Real>::SolverInfo&, std::tuple<InterpolationInfos* ...>) const [with unsigned int ...FEMSigs = {FEMSigs ...}; T = T; TDotT = TDotT; InterpolationInfos = {InterpolationInfos ...}; unsigned int Dim = 3; Real = float]’
 2463 |         DenseNodeData< T , UIntPack< FEMSigs ... > > solveSystem( UIntPack< FEMSigs ... > , typename BaseFEMIntegrator::template System< UIntPack< FEMSignature< FEMSigs >::Degree ... > >& F , const DenseNodeData< T , UIntPack< FEMSigs ... > >& constraints , TDotT Dot , LocalDepth maxSolveDepth , const SolverInfo& solverInfo , std::tuple< InterpolationInfos *... > interpolationInfos=std::make_tuple() ) const;
      |                                                      ^~~~~~~~~~~
/usr/local/include/PoissonRecon/Src/FEMTree.h:2463:54: note:   template argument deduction/substitution failed:
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:685:41: note:   cannot convert ‘sInfo’ (type ‘FEMTree<3, float>::SolverInfo’) to type ‘FEMTree<3, float>::LocalDepth’ {aka ‘int’}
  685 |                                         sInfo, iInfo);
      |                                         ^~~~~
In file included from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:51:
/usr/local/include/PoissonRecon/Src/FEMTree.h:2465:14: note: candidate: ‘template<unsigned int ...FEMSigs, class ... InterpolationInfos> void FEMTree<Dim, Real>::solveSystem(UIntPack<Begin ...>, BaseFEMIntegrator::System<UIntPack<FEMSignature<FEMSigs>::Degree ...> >&, const DenseNodeData<Real, UIntPack<Begin ...> >&, DenseNodeData<Real, UIntPack<Begin ...> >&, FEMTree<Dim, Real>::LocalDepth, const FEMTree<Dim, Real>::SolverInfo&, std::tuple<InterpolationInfos* ...>) const [with unsigned int ...FEMSigs = {FEMSigs ...}; InterpolationInfos = {InterpolationInfos ...}; unsigned int Dim = 3; Real = float]’
 2465 |         void solveSystem( UIntPack< FEMSigs ... > , typename BaseFEMIntegrator::template System< UIntPack< FEMSignature< FEMSigs >::Degree ... > >& F , const DenseNodeData< Real , UIntPack< FEMSigs ... > >& constraints , DenseNodeData< Real , UIntPack< FEMSigs ... > >& solution , LocalDepth maxSolveDepth , const SolverInfo& solverInfo , std::tuple< InterpolationInfos *... > interpolationInfos=std::make_tuple() ) const
      |              ^~~~~~~~~~~
/usr/local/include/PoissonRecon/Src/FEMTree.h:2465:14: note:   template argument deduction/substitution failed:
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:684:40: note:   mismatched types ‘DenseNodeData<float, UIntPack<V1 ...> >’ and ‘int’
  684 |             solution = tree.solveSystem(Sigs(), F, constraints, solveDepth,
      |                        ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  685 |                                         sInfo, iInfo);
      |                                         ~~~~~~~~~~~~~
In file included from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:51:
/usr/local/include/PoissonRecon/Src/FEMTree.h:2470:57: note: candidate: ‘template<unsigned int ...FEMSigs, class ... InterpolationInfos> DenseNodeData<Real, UIntPack<Begin ...> > FEMTree<Dim, Real>::solveSystem(UIntPack<Begin ...>, BaseFEMIntegrator::System<UIntPack<FEMSignature<FEMSigs>::Degree ...> >&, const DenseNodeData<Real, UIntPack<Begin ...> >&, FEMTree<Dim, Real>::LocalDepth, const FEMTree<Dim, Real>::SolverInfo&, std::tuple<InterpolationInfos* ...>) const [with unsigned int ...FEMSigs = {FEMSigs ...}; InterpolationInfos = {InterpolationInfos ...}; unsigned int Dim = 3; Real = float]’
 2470 |         DenseNodeData< Real , UIntPack< FEMSigs ... > > solveSystem( UIntPack< FEMSigs ... > , typename BaseFEMIntegrator::template System< UIntPack< FEMSignature< FEMSigs >::Degree ... > >& F , const DenseNodeData< Real , UIntPack< FEMSigs ... > >& constraints , LocalDepth maxSolveDepth , const SolverInfo& solverInfo , std::tuple< InterpolationInfos *... > interpolationInfos=std::make_tuple() ) const
      |                                                         ^~~~~~~~~~~
/usr/local/include/PoissonRecon/Src/FEMTree.h:2470:57: note:   template argument deduction/substitution failed:
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:684:40: note:   mismatched types ‘std::tuple<InterpolationInfos* ...>’ and ‘InterpolationInfo*’ {aka ‘FEMTree<3, float>::InterpolationInfo<float, 0>*’}
  684 |             solution = tree.solveSystem(Sigs(), F, constraints, solveDepth,
      |                        ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  685 |                                         sInfo, iInfo);
      |                                         ~~~~~~~~~~~~~
....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:730:18: error: deleting object of polymorphic class type ‘FEMTree<3, float>::DensityEstimator<2>’ which has non-virtual destructor might cause undefined behavior [-Werror=delete-non-virtual-dtor]
  730 |     if (density) delete density, density = NULL;
      |                  ^~~~~~~~~~~~~~
In file included from /usr/include/c++/11/functional:59,
                 from /usr/include/eigen3/Eigen/Core:85,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from ....../Open3D/cpp/open3d/geometry/SurfaceReconstructionPoisson.cpp:27:
/usr/include/c++/11/bits/std_function.h:435:9: error: ‘std::function<_Res(_ArgTypes ...)>::function(_Functor&&) [with _Functor = open3d::geometry::poisson::Execute<float, 5, 5, 5>(const open3d::geometry::PointCloud&, std::shared_ptr<open3d::geometry::TriangleMesh>&, std::vector<double>&, int, float, float, bool, UIntPack<5, 5, 5>)::<lambda(open3d::geometry::poisson::Open3DData, Point<float, 3>&)>; _Constraints = void; _Res = bool; _ArgTypes = {open3d::geometry::poisson::Open3DData, Point<float, 3>&}]’, declared using local type ‘open3d::geometry::poisson::Execute<float, 5, 5, 5>(const open3d::geometry::PointCloud&, std::shared_ptr<open3d::geometry::TriangleMesh>&, std::vector<double>&, int, float, float, bool, UIntPack<5, 5, 5>)::<lambda(open3d::geometry::poisson::Open3DData, Point<float, 3>&)>’, is used but never defined [-fpermissive]
  435 |         function(_Functor&& __f)
      |         ^~~~~~~~
/usr/include/c++/11/bits/std_function.h:435:9: error: ‘std::function<_Res(_ArgTypes ...)>::function(_Functor&&) [with _Functor = open3d::geometry::poisson::Execute<float, 5, 5, 5>(const open3d::geometry::PointCloud&, std::shared_ptr<open3d::geometry::TriangleMesh>&, std::vector<double>&, int, float, float, bool, UIntPack<5, 5, 5>)::<lambda(open3d::geometry::poisson::Open3DData, Point<float, 3>&, float&)>; _Constraints = void; _Res = bool; _ArgTypes = {open3d::geometry::poisson::Open3DData, Point<float, 3>&, float&}]’, declared using local type ‘open3d::geometry::poisson::Execute<float, 5, 5, 5>(const open3d::geometry::PointCloud&, std::shared_ptr<open3d::geometry::TriangleMesh>&, std::vector<double>&, int, float, float, bool, UIntPack<5, 5, 5>)::<lambda(open3d::geometry::poisson::Open3DData, Point<float, 3>&, float&)>’, is used but never defined [-fpermissive]
/usr/include/c++/11/bits/std_function.h:435:9: error: ‘std::function<_Res(_ArgTypes ...)>::function(_Functor&&) [with _Functor = open3d::geometry::poisson::Execute<float, 5, 5, 5>(const open3d::geometry::PointCloud&, std::shared_ptr<open3d::geometry::TriangleMesh>&, std::vector<double>&, int, float, float, bool, UIntPack<5, 5, 5>)::<lambda(unsigned int, size_t)>; _Constraints = void; _Res = void; _ArgTypes = {unsigned int, long unsigned int}]’, declared using local type ‘open3d::geometry::poisson::Execute<float, 5, 5, 5>(const open3d::geometry::PointCloud&, std::shared_ptr<open3d::geometry::TriangleMesh>&, std::vector<double>&, int, float, float, bool, UIntPack<5, 5, 5>)::<lambda(unsigned int, size_t)>’, is used but never defined [-fpermissive]
/usr/include/c++/11/bits/std_function.h:435:9: error: ‘std::function<_Res(_ArgTypes ...)>::function(_Functor&&) [with _Functor = open3d::geometry::poisson::Execute<float, 5, 5, 5>(const open3d::geometry::PointCloud&, std::shared_ptr<open3d::geometry::TriangleMesh>&, std::vector<double>&, int, float, float, bool, UIntPack<5, 5, 5>)::<lambda(unsigned int, size_t)>; _Constraints = void; _Res = void; _ArgTypes = {unsigned int, long unsigned int}]’, declared using local type ‘open3d::geometry::poisson::Execute<float, 5, 5, 5>(const open3d::geometry::PointCloud&, std::shared_ptr<open3d::geometry::TriangleMesh>&, std::vector<double>&, int, float, float, bool, UIntPack<5, 5, 5>)::<lambda(unsigned int, size_t)>’, is used but never defined [-fpermissive]
cc1plus: all warnings being treated as errors
make[2]: *** [cpp/open3d/geometry/CMakeFiles/geometry.dir/build.make:401: cpp/open3d/geometry/CMakeFiles/geometry.dir/SurfaceReconstructionPoisson.cpp.o] Error 1
make[2]: Leaving directory '....../Open3D/build'
make[1]: *** [CMakeFiles/Makefile2:1539: cpp/open3d/geometry/CMakeFiles/geometry.dir/all] Error 2
make[1]: Leaving directory '....../Open3D/build'
make: *** [Makefile:159: all] Error 2

7. **OpenSSL 3**:

```console
include -isystem /usr/include/jsoncpp -isystem /usr/include/liblzf -isystem /usr/local/include/tinyfiledialogs -isystem /usr/include/imgui -isystem /usr/include/stb -isystem /usr/include/mit-krb5 -isystem /usr/include/pgm-5.3 -isystem /usr/include/libxml2 -isystem /opt/intel/oneapi/tbb/2021.6.0/include -isystem /opt/intel/oneapi/dpl/2021.7.0/linux/include -isystem /opt/intel/oneapi/mkl/2022.1.0/include -isystem /opt/intel/oneapi/embree/3.13.3/include -isystem /usr/include/eigen3 -isystem /usr/local/filament/include --std=c++17 -DOPENSSL_NO_DEPRECATED_3_0 -I/usr/include/minizip -I/usr/local/cuda/include -I/usr/local/vtk/headers/vtk-9.2 -I/usr/local/filament/include -I/opt/intel/oneapi/tbb/latest/include -I/opt/intel/oneapi/embree/latest/include -I/opt/intel/oneapi/embree/latest -O3 -DNDEBUG -fPIC -Wall -Wextra -Werror -Wno-unused-parameter -fcolor-diagnostics -fstack-protector -Wformat -Wformat-security -m64 -MD -MT cpp/open3d/visualization/CMakeFiles/visualization.dir/rendering/filament/FilamentView.cpp.o -MF CMakeFiles/visualization.dir/rendering/filament/FilamentView.cpp.o.d -o CMakeFiles/visualization.dir/rendering/filament/FilamentView.cpp.o -c ......Open3D/cpp/open3d/visualization/rendering/filament/FilamentView.cpp
......Open3D/cpp/open3d/utility/Download.cpp:78:5: error: 'MD5_Init' is deprecated [-Werror,-Wdeprecated-declarations]
    MD5_Init(&ctx);
    ^
/usr/include/openssl/md5.h:49:1: note: 'MD5_Init' has been explicitly marked deprecated here
OSSL_DEPRECATEDIN_3_0 int MD5_Init(MD5_CTX *c);
^
/usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
#   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
                                                ^
/usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
#     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                   ^
......Open3D/cpp/open3d/utility/Download.cpp:82:9: error: 'MD5_Update' is deprecated [-Werror,-Wdeprecated-declarations]
        MD5_Update(&ctx, buffer, fp.gcount());
        ^
/usr/include/openssl/md5.h:50:1: note: 'MD5_Update' has been explicitly marked deprecated here
OSSL_DEPRECATEDIN_3_0 int MD5_Update(MD5_CTX *c, const void *data, size_t len);
^
/usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
#   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
                                                ^
/usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
#     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                   ^
......Open3D/cpp/open3d/utility/Download.cpp:85:5: error: 'MD5_Final' is deprecated [-Werror,-Wdeprecated-declarations]
    MD5_Final(hash, &ctx);
    ^
/usr/include/openssl/md5.h:51:1: note: 'MD5_Final' has been explicitly marked deprecated here
OSSL_DEPRECATEDIN_3_0 int MD5_Final(unsigned char *md, MD5_CTX *c);
^
/usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
#   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
                                                ^
/usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
#     define OSSL_DEPRECATED(since) __attribute__((deprecated))
                                                   ^
3 errors generated.
make[2]: *** [cpp/open3d/utility/CMakeFiles/utility.dir/build.make:121: cpp/open3d/utility/CMakeFiles/utility.dir/Download.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....

Open3D, Python and System information

- Operating system: Ubuntu 22.04
- Python version: Python 3.10.4
- Open3D version: git of the day August 3, 2022
- System architecture: x86
- Is this a remote workstation?: no
- How did you install Open3D?: build from source
- Compiler version (if built from source): gcc 11.2.0

Additional information

No response

ssheorey commented 1 year ago

Hi @jiapei-nexera thanks for compiling these issues together - we are addressing some of them for v0.17: fmt 9, OpenSSL 3: https://github.com/isl-org/Open3D/pull/5303

We will be happy to accept PRs for the remaining issues!

We recommend using the pre-built binary archives in most cases instead of compiling from source. http://www.open3d.org/docs/latest/getting_started.html#c