sweeneychris / TheiaSfM

An open source library for multiview geometry and structure from motion
Other
898 stars 280 forks source link

Keep facing error: no viable overloaded '-=' #267

Open m-vt opened 1 year ago

m-vt commented 1 year ago

Hi, I followed the installaion instruction in Theia-sfm.org. first step (cmake ..) run successfully, but keep facing "TheiaSfM/libraries/akaze/src/nldiffusion_functions.cpp:267:47: error: no viable overloaded '-='" while running make -j4.

Note that I am on macOS Pro M1 chip Ventura 13.2.1. cmake version 3.25.3 eigen 3.4.0_1 ceres-solver 2.1.0_3 openimageio 2.4.9.0_1 rocksdb 7.10.2 libomp 15.0.7

I also replace the line (libraries/akaze/src/nldiffusion_functions.cpp) :

x_kernel_mul(x_kernel_clamped_size - 1) -= x_kernel_mul.sum() - x_kernel_size;

with the following code:

x_kernel_mul(x_kernel_clamped_size - 1) = x_kernel_mul(x_kernel_clamped_size - 1) - (x_kernel_mul.sum() - x_kernel_size);

But then I kept facing the below error : "error: invalid operands to binary expression ('typename internal::enable_if<IsRowMajor && (!(internal::get_compile_time_incr<typename IvcType::type>::value == 1 || internal::is_valid_index_type::value)), IndexedView<Matrix<float, 1, -1, 1>, IvcIndex, typename IvcType::type>>::type' (aka 'Eigen::IndexedView<Eigen::Matrix<float, 1, -1, 1>, Eigen::internal::SingleRange, double>') and 'Eigen::DenseBase<Eigen::Matrix<float, 1, -1, 1>>::Scalar' (aka 'float'))"

Does anybody have any suggestions? in the following it is my cmake build run info:

(base) MacOS@MacOS-MBP build % cmake ..                                                                      
CMake Deprecation Warning at CMakeLists.txt:35 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- The C compiler identification is AppleClang 14.0.0.14000029
-- The CXX compiler identification is AppleClang 14.0.0.14000029
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- No preference for use of exported Eigen CMake configuration set, and no hints for include directory provided. Defaulting to preferring an installed/exported Eigen CMake configuration if available.
-- Found installed version of Eigen: /opt/homebrew/share/eigen3/cmake
-- Found Eigen: /opt/homebrew/include/eigen3 (found suitable version "3.4.0", minimum required is "3.2.0") 
-- Found Eigen version 3.4.0: /opt/homebrew/include/eigen3
-- Performing Test HAVE_RETURN_TYPE_C_LINKAGE
-- Performing Test HAVE_RETURN_TYPE_C_LINKAGE - Success
-- No preference for use of exported gflags CMake configuration set, and no hints for include/library directories provided. Defaulting to preferring an installed/exported gflags CMake configuration if available.
-- Found installed version of gflags: /opt/homebrew/lib/cmake/gflags
-- Detected gflags version: 2.2.2
-- Found Gflags: /opt/homebrew/include  
-- Found Google Flags: /opt/homebrew/include in namespace: google
-- Check for Google Log
-- No preference for use of exported glog CMake configuration set, and no hints for include/library directories provided. Defaulting to preferring an installed/exported glog CMake configuration if available.
-- Found installed version of glog: /opt/homebrew/lib/cmake/glog
-- Detected glog version: 0.6.0
-- Found Glog: glog::glog  
-- Found Google Logging: 
-- Check for Ceres
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Found CXSparse: /opt/homebrew/include (found suitable version "4.0.3", minimum required is "4.0.3") 
-- Found AMD headers in: /opt/homebrew/include
-- Found AMD library: /opt/homebrew/lib/libamd.dylib
-- Found CAMD headers in: /opt/homebrew/include
-- Found CAMD library: /opt/homebrew/lib/libcamd.dylib
-- Found CCOLAMD headers in: /opt/homebrew/include
-- Found CCOLAMD library: /opt/homebrew/lib/libccolamd.dylib
-- Found CHOLMOD headers in: /opt/homebrew/include
-- Found CHOLMOD library: /opt/homebrew/lib/libcholmod.dylib
-- Found COLAMD headers in: /opt/homebrew/include
-- Found COLAMD library: /opt/homebrew/lib/libcolamd.dylib
-- Found SPQR headers in: /opt/homebrew/include
-- Found SPQR library: /opt/homebrew/lib/libspqr.dylib
-- Found Config headers in: /opt/homebrew/include
-- Found Config library: /opt/homebrew/lib/libsuitesparseconfig.dylib
-- Found Intel Thread Building Blocks (TBB) library (2021.8 / ) include location: . Assuming SuiteSparseQR was compiled with TBB.
-- Looking for shm_open in rt
-- Looking for shm_open in rt - not found
-- Could not find librt, but found SuiteSparse_config, assuming that SuiteSparse was compiled without timing.
-- Found METIS: /opt/homebrew/include (found version "5.1.0") 
-- Found SuiteSparse: /opt/homebrew/include (found suitable version "7.0.1", minimum required is "7.0.0") found components: AMD CAMD CCOLAMD CHOLMOD COLAMD SPQR Config 
-- Found required Ceres dependency: Eigen version 3.4.0 in /opt/homebrew/share/eigen3/cmake
-- Found required Ceres dependency: glog
-- Found required Ceres dependency: gflags
-- Found Ceres version: 2.1.0 installed in: /opt/homebrew with components: [EigenSparse, SparseLinearAlgebraLibrary, LAPACK, SuiteSparse, CXSparse, AccelerateSparse, SchurSpecializations, Multithreading]
-- Found Ceres: 
-- Check for OpenImageIO
-- Found OpenImageIO: /opt/homebrew/include  
-- Found OpenImageIO: /opt/homebrew/include
-- Found AMD headers in: /opt/homebrew/include
-- Found AMD library: /opt/homebrew/lib/libamd.dylib
-- Found CAMD headers in: /opt/homebrew/include
-- Found CAMD library: /opt/homebrew/lib/libcamd.dylib
-- Found COLAMD headers in: /opt/homebrew/include
-- Found COLAMD library: /opt/homebrew/lib/libcolamd.dylib
-- Found CCOLAMD headers in: /opt/homebrew/include
-- Found CCOLAMD library: /opt/homebrew/lib/libccolamd.dylib
-- Found CHOLMOD headers in: /opt/homebrew/include
-- Found CHOLMOD library: /opt/homebrew/lib/libcholmod.dylib
-- Found SUITESPARSEQR headers in: /opt/homebrew/include
-- Found SUITESPARSEQR library: /opt/homebrew/lib/libspqr.dylib
-- Found TBB library: /opt/homebrew/lib/libtbb.dylib
-- Found Intel Thread Building Blocks (TBB) library: /opt/homebrew/lib/libtbb.dylib, assuming SuiteSparseQR was compiled with TBB.
-- Found TBB_MALLOC library: /opt/homebrew/lib/libtbbmalloc.dylib
-- Found Intel Thread Building Blocks (TBB) Malloc library: /opt/homebrew/lib/libtbbmalloc.dylib
-- Found SUITESPARSE_CONFIG headers in: /opt/homebrew/include
-- Found SUITESPARSE_CONFIG library: /opt/homebrew/lib/libsuitesparseconfig.dylib
-- Found METIS library: debug;/opt/homebrew/lib/libmetis.dylib;optimized;/opt/homebrew/lib/libmetis.dylib
-- Found SuiteSparse: TRUE (found version "..") 
-- Found SuiteSparse ..
-- Check for RocksDB
-- Found RocksDB: /opt/homebrew/lib/librocksdb.dylib  
-- Found RocksDB
-- Found RocksDB: /opt/homebrew/include
-- Check for RapidJSON
-- RapidJSON found. Headers: /opt/homebrew/Cellar/rapidjson/1.1.0/include
-- Found RapidJSON: /opt/homebrew/Cellar/rapidjson/1.1.0/include
CMake Deprecation Warning at libraries/gtest/CMakeLists.txt:48 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- Found PythonInterp: /Users/user/opt/anaconda3/bin/python (found version "3.9.12") 
CMake Deprecation Warning at libraries/akaze/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- Found installed version of Eigen: /opt/homebrew/share/eigen3/cmake
-- Found Eigen: /opt/homebrew/include/eigen3 (found version "3.4.0") 
-- Found Eigen version 3.4.0: /opt/homebrew/include/eigen3
CMake Deprecation Warning at libraries/akaze/cimg/CMakeLists.txt:5 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- Compiler is Clang, disabling OpenMP.
-- Found JPEG: /opt/homebrew/lib/libjpeg.dylib (found version "80") 
-- Building without OpenMP.
-- No build type specified; defaulting to CMAKE_BUILD_TYPE=Release.
-- Performing Test HAVE_LTO_SUPPORT
-- Performing Test HAVE_LTO_SUPPORT - Success
-- Enabling link-time optimization (-flto)
-- Performing Test COMPILER_HAS_CXX11_FLAG
-- Performing Test COMPILER_HAS_CXX11_FLAG - Success
CMake Deprecation Warning at libraries/cereal/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

CMake Deprecation Warning at libraries/flann/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

CMake Deprecation Warning at libraries/flann/CMakeLists.txt:5 (cmake_policy):
  The OLD behavior for policy CMP0012 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.

-- HDF5 C compiler wrapper is unable to compile a minimal HDF5 program.
-- Found HDF5: /opt/homebrew/lib/libhdf5.dylib (found version "1.12.2")  
-- Found GTest: /Users/user/opt/anaconda3/lib/cmake/GTest/GTestConfig.cmake (found version "1.10.0")  
-- Found OpenMP_C: -Xpreprocessor -fopenmp -I/Users/user/opt/anaconda3/pkgs/llvm-openmp-12.0.0-haf9daa7_1/include (found version "5.0") 
-- Found OpenMP_CXX: -Xpreprocessor -fopenmp -I/Users/user/opt/anaconda3/pkgs/llvm-openmp-12.0.0-haf9daa7_1/include (found version "5.0") 
-- Found OpenMP: TRUE (found version "5.0")  
-- Install prefix: /usr/local
-- Build type: Release
-- Building C bindings: OFF
-- Building examples: OFF
-- Building tests: OFF
-- Building documentation: OFF
-- Building python bindings: OFF
-- Building matlab bindings: OFF
-- Building CUDA library: OFF
-- Using OpenMP support: ON
-- Using MPI support: OFF
CMake Deprecation Warning at libraries/optimo/CMakeLists.txt:32 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

CMake Deprecation Warning at libraries/optimo/CMakeLists.txt:33 (cmake_policy):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- CMAKE_CXX_FLAGS:  -Qunused-arguments -mllvm -inline-threshold=600 -Wno-return-type-c-linkage -std=c++11 -stdlib=libc++
-- Found installed version of Eigen: /opt/homebrew/share/eigen3/cmake
-- Found Eigen version 3.4.0: /opt/homebrew/include/eigen3
CMake Deprecation Warning at libraries/statx/CMakeLists.txt:32 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

CMake Deprecation Warning at libraries/statx/CMakeLists.txt:33 (cmake_policy):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- CMAKE_CXX_FLAGS:  -Qunused-arguments -mllvm -inline-threshold=600 -Wno-return-type-c-linkage -std=c++11 -stdlib=libc++
-- Default Install prefix: /usr/local/
-- Found installed version of Eigen: /opt/homebrew/share/eigen3/cmake
-- Found Eigen version 3.4.0: /opt/homebrew/include/eigen3
-- Found installed version of gflags: /opt/homebrew/lib/cmake/gflags
-- Detected gflags version: 2.2.2
-- Found installed version of glog: /opt/homebrew/lib/cmake/glog
-- Detected glog version: 0.6.0
-- Check for Google ceres-solver
-- Found AMD headers in: /opt/homebrew/include
-- Found AMD library: /opt/homebrew/lib/libamd.dylib
-- Found CAMD headers in: /opt/homebrew/include
-- Found CAMD library: /opt/homebrew/lib/libcamd.dylib
-- Found CCOLAMD headers in: /opt/homebrew/include
-- Found CCOLAMD library: /opt/homebrew/lib/libccolamd.dylib
-- Found CHOLMOD headers in: /opt/homebrew/include
-- Found CHOLMOD library: /opt/homebrew/lib/libcholmod.dylib
-- Found COLAMD headers in: /opt/homebrew/include
-- Found COLAMD library: /opt/homebrew/lib/libcolamd.dylib
-- Found SPQR headers in: /opt/homebrew/include
-- Found SPQR library: /opt/homebrew/lib/libspqr.dylib
-- Found Config headers in: /opt/homebrew/include
-- Found Config library: /opt/homebrew/lib/libsuitesparseconfig.dylib
-- Found Intel Thread Building Blocks (TBB) library (2021.8 / ) include location: . Assuming SuiteSparseQR was compiled with TBB.
-- Could not find librt, but found SuiteSparse_config, assuming that SuiteSparse was compiled without timing.
-- Found SuiteSparse: /opt/homebrew/include (found suitable version "7.0.1", minimum required is "7.0.0") found components: AMD CAMD CCOLAMD CHOLMOD COLAMD SPQR Config 
-- Found required Ceres dependency: Eigen version 3.4.0 in /opt/homebrew/share/eigen3/cmake
-- Found required Ceres dependency: glog
-- Found required Ceres dependency: gflags
-- Found Ceres version: 2.1.0 installed in: /opt/homebrew with components: [EigenSparse, SparseLinearAlgebraLibrary, LAPACK, SuiteSparse, CXSparse, AccelerateSparse, SchurSpecializations, Multithreading]
-- Found Ceres headers in: 
-- Found BLAS: /Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/Accelerate.framework  
-- Found LAPACK: /Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/Accelerate.framework;-lm;-ldl  
-- Check for Optimo
-- Found optimo headers: /Users/user/Desktop/TheiaSfM/libraries/optimo
-- Enabling link-time optimization (-flto)
-- Performing Test THEIA_HAVE_THREAD_LOCAL_STORAGE
-- Performing Test THEIA_HAVE_THREAD_LOCAL_STORAGE - Success
-- Enabling link-time optimization (-flto)
-- Found OpenGL: /Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/OpenGL.framework   
-- Found GLUT: /Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/GLUT.framework  
-- Found GLUT: /Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/GLUT.framework/Headers
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/user/Desktop/TheiaSfM/build
wilsonkl commented 1 year ago

How about a type cast? Change x_kernel_clamped_size - 1 to static_cast<int>(x_kernel_clamped_size - 1)? Right now it's using a float as an index into an Eigen row vector.