Hey there,
I've got some troubles compiling openMVG 1.1 with ceres on Windows 7 with Visual Studio 2015. Here is what I did:
Now I tried to use the ceres lib for building openMVG 1.1. Here's the cmake output:
Detected: Vendor ID 'GenuineIntel' CPU Family '6' CPU Model '60' CPU Flags ''
Detected CPU: haswell
Checking for C++11 compiler
Checking for C++11 compiler - unavailable
-- Did not find MOSEK header
-- Did not find MOSEK library
Could not find mosek library on this machine.
Eigen 3.2.8 found (include: C:/Entwicklung/40 Entwicklung/Programmierung/Bibliotheken/Eigen/include/eigen3)
Found required Ceres dependency: Eigen version 3.2.8 in C:/Entwicklung/40 Entwicklung/Programmierung/Bibliotheken/Eigen/include/eigen3
Failed to find installed glog CMake configuration, searching for glog build directories exported with CMake.
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: C:/Entwicklung/40 Entwicklung/Programmierung/Bibliotheken_VC14/CERES/gflags/install/lib/cmake/gflags
Detected gflags version: 2.2.0
Found exported glog build directory: C:/Entwicklung/40 Entwicklung/Programmierung/Bibliotheken_VC14/CERES/glog/build-glog
Detected glog version: 0.3.5
Found required Ceres dependency: glog
Failed to find installed gflags CMake configuration, searching for gflags build directories exported with CMake.
Found exported gflags build directory: C:/Entwicklung/40 Entwicklung/Programmierung/Bibliotheken_VC14/CERES/gflags/install/lib/cmake/gflags
Detected gflags version: 2.2.0
Found required Ceres dependency: gflags
Found Ceres version: 1.12.0 installed in: C:/Entwicklung/40 Entwicklung/Programmierung/Bibliotheken_VC14/CERES/ceres-build/install with components: [CXSparse, SparseLinearAlgebraLibrary, SchurSpecializations, OpenMP]
Flann 1.8.4 found (include: C:/Entwicklung/openMVG-1.1/src/third_party/flann/src/cpp/flann)
CoinUtils 2.9.3 found (include: C:/Entwicklung/openMVG-1.1/src/dependencies/osi_clp/CoinUtils/src)
Clp 1.15.11 found (include: C:/Entwicklung/openMVG-1.1/src/dependencies/osi_clp/Clp/src)
Osi 0.106.10 found (include: C:/Entwicklung/openMVG-1.1/src/dependencies/osi_clp/Osi/src/Osi)
Lemon 1.3 found (include: C:/Entwicklung/openMVG-1.1/src/third_party/lemon/lemon)
Could NOT find PythonInterp (missing: PYTHON_EXECUTABLE)
Could NOT find Wget (missing: WGET_EXECUTABLE)
Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
Could NOT find Ghostscript (missing: GHOSTSCRIPT_EXECUTABLE)
Could NOT find GLPK (missing: GLPK_LIBRARY GLPK_INCLUDE_DIR GLPK_PROPER_VERSION_FOUND) (Required is at least version "4.33")
Could NOT find ILOG (missing: ILOG_CPLEX_LIBRARY ILOG_CPLEX_INCLUDE_DIR)
Could NOT find COIN (missing: COIN_INCLUDE_DIR COIN_CBC_LIBRARY COIN_CBC_SOLVER_LIBRARY COIN_CGL_LIBRARY COIN_CLP_LIBRARY COIN_COIN_UTILS_LIBRARY COIN_OSI_LIBRARY COIN_OSI_CBC_LIBRARY COIN_OSI_CLP_LIBRARY)
Could NOT find SOPLEX (missing: SOPLEX_LIBRARY SOPLEX_INCLUDE_DIR)
Configured Eigen 3.2.8
** OpenMVG version: 1.1.0
** Build Shared libs: OFF
** Build OpenMVG tests: OFF
** Build OpenMVG documentation: OFF
** Build OpenMVG samples applications: OFF
** Build OpenMVG openGL examples: OFF
** Enable code coverage generation: OFF
** Enable OpenMP parallelization: ON
** Build OpenCV+OpenMVG samples programs: ON
** Use OpenCV SIFT features: ON
EIGEN: 3.2.8 (internal)
CERES: 1.12.0 (external)
FLANN: 1.8.4 (internal)
LIBTIFF: (internal)
LIBPNG: (internal)
LIBJPEG (internal)
CLP: 1.15.11 (internal)
COINUTILS: 2.9.3 (internal)
OSI: 0.106.10 (internal)
LEMON: 1.3 (internal)
Configuring done
Generating done
So far so good. Now I try to build openMVG and I come across always the same error. All software modules that use ceres fail to build with the following error (here the output from the openMVG_main_ComputeStructureFromKnownPoses module):
LNK2001 Nicht aufgelöstes externes Symbol ""class std::set<class google::LogSink *,struct std::less<class google::LogSink *>,class std::allocator<class google::LogSink *> > google::log_sinks_global" (?log_sinks_global@google@@3V?$set@PEAVLogSink@google@@U?$less@PEAVLogSink@google@@@std@@V?$allocator@PEAVLogSink@google@@@4@@std@@A)". openMVG_main_ComputeStructureFromKnownPoses C:\Entwicklung\openMVG-1.1-build\software\SfM\openMVG_sfm.lib(sfm_data_BA_ceres.obj) 1
I tried building gflags/glog/cxsparse/ceres several times, dynamic, static linking, nothing works. The tests for these libraries work though.
Any ideas on that?
I really appreciate your help!
Regards
mrscho
Hi @mrscho
Did you try to compile OpenMVG with it's internal ceres dependency. It already includes cxsparse and so you will have the same configuration (expect the ceres logging system that will rely on miniglog)?
include(CMakeFindDependencyMacro)
find_dependency(Ceres)
Hi @pmoulon,
thanks for your fast response. I was able to build it with your first hint (using internal ceres). Unfortunately all attempts building it with external ceres failed. Seems like sth in the build process of ceres went wrong :/ Anyway, I will try out all the modules.
Regards
mrscho
I have got same problem using ceres 1.13. I am using ceres 1.13 with opencv and sfm modules (VS 2015-Windows 10).
CMAKE output :
Checking for C++11 compiler
Checking for C++11 compiler - available
Eigen 3.3.90 found (include: G:/Lib/eigen)
Found required Ceres dependency: Eigen version 3.3.90 in G:/Lib/eigen
Found installed version of glog: G:/lib/Install/glog/lib/cmake/glog
Detected glog version: 0.3.5
Found required Ceres dependency: glog
Found Ceres version: 1.13.0 installed in: G:/Lib/install/ceres-solver with components: [SchurSpecializations, OpenMP]
Flann 1.8.4 found (include: G:/Lib/openMVG/src/third_party/flann/src/cpp/flann)
CoinUtils 2.10.13 found (include: G:/Lib/openMVG/src/dependencies/osi_clp/CoinUtils/src)
Clp 1.16.10 found (include: G:/Lib/openMVG/src/dependencies/osi_clp/Clp/src)
Osi 0.107.8 found (include: G:/Lib/openMVG/src/dependencies/osi_clp/Osi/src/Osi)
Lemon 1.3 found (include: G:/Lib/openMVG/src/third_party/lemon/lemon)
Could NOT find Wget (missing: WGET_EXECUTABLE)
Could NOT find Ghostscript (missing: GHOSTSCRIPT_EXECUTABLE)
Could NOT find GLPK (missing: GLPK_LIBRARY GLPK_INCLUDE_DIR GLPK_PROPER_VERSION_FOUND) (Required is at least version "4.33")
Could NOT find ILOG (missing: ILOG_CPLEX_LIBRARY ILOG_CPLEX_INCLUDE_DIR)
Could NOT find COIN (missing: COIN_INCLUDE_DIR COIN_CBC_LIBRARY COIN_CBC_SOLVER_LIBRARY COIN_CGL_LIBRARY COIN_CLP_LIBRARY COIN_COIN_UTILS_LIBRARY COIN_OSI_LIBRARY COIN_OSI_CBC_LIBRARY COIN_OSI_CLP_LIBRARY)
Could NOT find SOPLEX (missing: SOPLEX_LIBRARY SOPLEX_INCLUDE_DIR)
Configured Eigen 3.3.1
CMake Warning at openMVG_Samples/describe_and_match_GUI/CMakeLists.txt:4 (find_package):
By not providing "FindQt5Widgets.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"Qt5Widgets", but CMake did not find one.
Could not find a package configuration file provided by "Qt5Widgets" with
any of the following names:
Qt5WidgetsConfig.cmake
qt5widgets-config.cmake
Add the installation prefix of "Qt5Widgets" to CMAKE_PREFIX_PATH or set
"Qt5Widgets_DIR" to a directory containing one of the above files. If
"Qt5Widgets" provides a separate development package or SDK, be sure it has
been installed.
CMake Warning at software/VO/AlternativeVO/CMakeLists.txt:6 (find_package):
By not providing "FindQt5Widgets.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"Qt5Widgets", but CMake did not find one.
Could not find a package configuration file provided by "Qt5Widgets" with
any of the following names:
Qt5WidgetsConfig.cmake
qt5widgets-config.cmake
Add the installation prefix of "Qt5Widgets" to CMAKE_PREFIX_PATH or set
"Qt5Widgets_DIR" to a directory containing one of the above files. If
"Qt5Widgets" provides a separate development package or SDK, be sure it has
been installed.
CMake Warning at software/CMakeLists.txt:14 (find_package):
By not providing "FindQt5.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Qt5", but
CMake did not find one.
Could not find a package configuration file provided by "Qt5" with any of
the following names:
Qt5Config.cmake
qt5-config.cmake
Add the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"
to a directory containing one of the above files. If "Qt5" provides a
separate development package or SDK, be sure it has been installed.
** Qt5 not found, GUI modules will not be build
Could NOT find Sphinx (missing: SPHINX_EXECUTABLE)
Sphinx need to be installed to generate the sphinx documentation
** OpenMVG version: 1.2.0
** Build Shared libs: OFF
** Build OpenMVG tests: OFF
** Build OpenMVG softwares: ON
** Build OpenMVG documentation: ON
** Build OpenMVG samples applications: ON
** Build OpenMVG openGL examples: OFF
** Enable code coverage generation: OFF
** Enable OpenMP parallelization: ON
** Build OpenCV+OpenMVG samples programs: ON
** Use OpenCV SIFT features: OFF
EIGEN: 3.3.90 (internal)
CERES: 1.13.0 (external)
FLANN: 1.8.4 (internal)
LIBTIFF: 4.0.6 (internal)
LIBPNG: (internal)
LIBJPEG (internal)
CLP: 1.16.10 (internal)
COINUTILS: 2.10.13 (internal)
OSI: 0.107.8 (internal)
LEMON: 1.3 (internal)
In openmvg_multiveiw project include path G:\Lib\install\glog\include is missing (path using my own ceres build).
Adding path solve error. But a new error comes :
re : aucun opérateur trouvé qui accepte un opérande de partie droite de type 'double' (ou il n'existe pas de conversion acceptable)
1> g:\lib\eigen\eigen\src/Core/IndexedView.h(113): note: est peut-être 'Eigen::IndexedView
1> with
1> [
1> Derived=Eigen::Matrix
1> T=
1> ]
1> g:\lib\eigen\eigen\src/Core/MatrixBase.h(139): note: ou 'Eigen::IndexedView
1> with
1> [
1> Derived=Eigen::Matrix
1> T=
1> ]
1> G:\Lib\openMVG\src\openMVG\multiview\solver_essential_five_point.cpp(121): note: lors de la tentative de mise en correspondance de la liste des arguments '(Eigen::IndexedView
1> with
1> [
1> Derived=Eigen::Matrix
1> T=
1> ]
Can you try to use the internal Ceres library just for a fast check:
Using a external ceres is not a problem on Linux.
Seems like in your case the variable CERES_LIBRARIES is not contening glog for an unknown reason.
Regarding the Eigen problem I don't know, that's why I would advise you to test with the internal library that are working for the continuous integration:
see last build for develop: https://ci.appveyor.com/project/pmoulon/openmvg/build/1.0.600
for master: https://ci.appveyor.com/project/pmoulon/openmvg/build/1.0.569
Thanks for your answer.
Using internal ceres and eigen there is no problem.
To solve glog problem I changed cmakelists :
if (OpenMVG_USE_INTERNAL_CERES)
set(OpenMVG_INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/dependencies
${CMAKE_CURRENT_SOURCE_DIR}/dependencies/cereal/include
${LEMON_INCLUDE_DIRS}
${EIGEN_INCLUDE_DIRS}
${FLANN_INCLUDE_DIRS}
)
message ("CERES internal --> ${OpenMVG_INCLUDE_DIRS}")
else (OpenMVG_USE_INTERNAL_CERES)
set(OpenMVG_INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/dependencies
${CMAKE_CURRENT_SOURCE_DIR}/dependencies/cereal/include
${LEMON_INCLUDE_DIRS}
${EIGEN_INCLUDE_DIRS}
${FLANN_INCLUDE_DIRS}
${glog_DIR}/../../../include
)
message ("CERES external ${glog_DIR} --> ${OpenMVG_INCLUDE_DIRS}")
endif (OpenMVG_USE_INTERNAL_CERES)
Using this modification I got only 8 errors and many link errors :
Description Gravité Code Projet Fichier Ligne État de la suppression
'i' : la variable d'index de l'instruction 'for' OpenMP doit disposer d'un type intégral signé Erreur C3016 domset G:\Lib\openMVG\src\software\SfM\clustering\domSetLibrary\domset.cc 427
'i' : la variable d'index de l'instruction 'for' OpenMP doit disposer d'un type intégral signé Erreur C3016 domset G:\Lib\openMVG\src\software\SfM\clustering\domSetLibrary\domset.cc 438
'i' : la variable d'index de l'instruction 'for' OpenMP doit disposer d'un type intégral signé Erreur C3016 domset G:\Lib\openMVG\src\software\SfM\clustering\domSetLibrary\domset.cc 455
'i' : la variable d'index de l'instruction 'for' OpenMP doit disposer d'un type intégral signé Erreur C3016 domset G:\Lib\openMVG\src\software\SfM\clustering\domSetLibrary\domset.cc 469
'=' binaire : aucun opérateur trouvé qui accepte un opérande de partie droite de type 'const double' (ou il n'existe pas de conversion acceptable) Erreur C2679 openMVG_multiview G:\Lib\openMVG\src\openMVG\multiview\solver_essential_five_point.cpp 120
'=' binaire : aucun opérateur trouvé qui accepte un opérande de partie droite de type 'const double' (ou il n'existe pas de conversion acceptable) Erreur C2679 openMVG_multiview G:\Lib\openMVG\src\openMVG\multiview\solver_essential_five_point.cpp 121
'=' binaire : aucun opérateur trouvé qui accepte un opérande de partie droite de type 'const double' (ou il n'existe pas de conversion acceptable) Erreur C2679 openMVG_multiview G:\Lib\openMVG\src\openMVG\multiview\solver_essential_five_point.cpp 122
'=' binaire : aucun opérateur trouvé qui accepte un opérande de partie droite de type 'const double' (ou il n'existe pas de conversion acceptable) Erreur C2679 openMVG_multiview G:\Lib\openMVG\src\openMVG\multiview\solver_essential_five_point.cpp 123
openmp error is not a problem but eigen I don't understand and still investigate it
OpenMP error related to size_t indices have been fixed in the develop branches:
https://github.com/openMVG/openMVG/blob/develop/src/software/SfM/clustering/domSetLibrary/domset.cc#L428
You can checkout the develop
branch and the problem will disappear.
regarding the error in src\openMVG\multiview\solver_essential_five_point.cpp
Perhaps it comes form a different version of Eigen used by Ceres and OpenMVG.
Can you check that only one Eigen version is used?
About eigen I test code using this source :
#ifdef INTERNAL
#include <g:/Lib/openMVG/src/third_party/eigen/Eigen/dense>
#include <g:/Lib/openMVG/src/third_party/eigen/Eigen/SparseCore>
#include <g:/Lib/openMVG/src/third_party/eigen/Eigen/StdVector>
#else // version 3.3.90
#include <g:/lib/Eigen/Eigen/Dense>
#include <g:/lib/Eigen/Eigen/SparseCore>
#include <g:/lib/Eigen/Eigen/StdVector>
#endif
enum
{
coef_xxx, .......
};
void FivePointsPolynomialConstraints(const Eigen::MatrixXd &E_basis) {
// Build the polynomial form of E (equation (8) in Stewenius et al. [1])
Eigen::VectorXd E[3][3];
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
E[i][j] = Eigen::VectorXd::Zero(20);
E[i][j](coef_x) = double(E_basis(3 * i + j, 0));
E[i][j](coef_y) = E_basis(3 * i + j, 1);
E[i][j](coef_z) = E_basis(3 * i + j, 2);
E[i][j](coef_1) = E_basis(3 * i + j, 3);
}
}
}
when internal is defined no problem and when INTERNAL is not same error
C:\Users\Laurent.PC-LAURENT-VISI\Documents\Visual Studio 2013\test74255\main.cpp(39): error C2679: '=' binaire : aucun opérateur trouvé qui accepte un opérande de partie droite de type 'double' (ou il n'existe pas de conversion acceptable)
1> g:\lib\eigen\eigen\src/Core/IndexedView.h(113): note: est peut-être 'Eigen::IndexedView
1> with
1> [
1> Derived=Eigen::Matrix
1> T=
1> ]
1> g:\lib\eigen\eigen\src/Core/MatrixBase.h(139): note: ou 'Eigen::IndexedView
1> with
1> [
1> Derived=Eigen::Matrix
1> T=
1> ]
1> C:\Users\Laurent.PC-LAURENT-VISI\Documents\Visual Studio 2013\test74255\main.cpp(39): note: lors de la tentative de mise en correspondance de la liste des arguments '(Eigen::IndexedView
1> with
1> [
1> Derived=Eigen::Matrix
1> T=
1> ]
1>C:\Users\Laurent.PC-LAURENT-VISI\Documents\Visual Studio 2013\test74255\main.cpp(40): error C2679: '=' binaire : aucun opérateur trouvé qui accepte un opérande de partie droite de type 'const double' (ou il n'existe pas de conversion acceptable)
1> g:\lib\eigen\eigen\src/Core/IndexedView.h(113): note: est peut-être 'Eigen::IndexedView
1> with
1> [
1> Derived=Eigen::Matrix
1> T=
1> ]
1> g:\lib\eigen\eigen\src/Core/MatrixBase.h(139): note: ou 'Eigen::IndexedView
1> with
1> [
1> Derived=Eigen::Matrix
1> T=
1> ]
1> C:\Users\Laurent.PC-LAURENT-VISI\Documents\Visual Studio 2013\test74255\main.cpp(40): note: lors de la tentative de mise en correspondance de la liste des arguments '(Eigen::IndexedView
1> with
1> [
1> Derived=Eigen::Matrix
1> T=
1> ]
I posted a message on eigen list
it can be due to the fact that coef_xxx is an enum that is not a strongly typed enum.
Do you can try to make it a strongly typed enum:
enum xyz{a, b, c};
// versus
enum class : uint8_t xyz{a, b, c};
Ok problem is here when I write
E[i][j](0) = E_basis(3 * i + j, 0); there is no error
E[i][j](int(coef_y)) = E_basis(3 * i + j, 1);there is no error
enum class : uint8_t xyz{a, b, c}; what do you mean ?
*I tried
1 enum uint8_t: int{ same error
2 enum class uint8_t: int{
with E[i][j](uint8_t::coef_x)
gives main.cpp(6): error C2371: 'uint8_t' : redéfinition ; types de base différents
3 enum class : uint8_t xyz{{
gives 1>C:\Users\Laurent.PC-LAURENT-VISI\Documents\Visual Studio 2013\test74255\main.cpp(6): error C3430: une énumération délimitée doit avoir un nom
Sorry I meant: enum class xyz: uint8_t{
.
I typed too fast :-(
OK :
enum class xyz : uint8_t {
coef_xxx,
and
E[i][j](xyz::coef_x) = E_basis(3 * i + j, 0);
same error :
main.cpp(36): error C2679: '=' binaire :aucun opérateur trouvé qui accepte un opérande de partie droite de type 'const double' (ou il n'existe pas de conversion acceptable)
Ok, so the underlying type is not detected and used by the compiler.
(BTW, I also think that the VS error message is not right, at least hard to understand for us.)
If E[i][j]((int)xyz::coef_x) = E_basis(3 * i + j, 0);
is working, then the c++11 way will be something like:
#include <type_traits> //for std::underlying_type
...
enum class xyz : uint8_t {
coef_xxx,
...
};
using xyz_utype = std::underlying_type<xyz>::type;
..
E[i][j](static_cast<xyz_utype>(xyz::coef_x)) = E_basis(3 * i + j, 0);
So the cast is required in order to force to have the underlying type to be used as an integer index for the Eigen matrix.
I don't understand why you have the message and not the VS2015 CI we are using. Perhaps a story about a compiler updates...
I don't think problem is with VS 2015.
In https://github.com/openMVG/openMVG/issues/974#issuecomment-327563127 when I use internal eigen there is no problem but in my eigen version 3.3.90 problem appears
I sent a message to eigen list and first answers is :
a workaround either cast your enums to int (e.g., int(coef_x)) or better replace the enums by "const int".
and second answer is :
I fixed the issue: https://bitbucket.org/eigen/eigen/commits/034fba127699
I will test this commit as soon as will be available on https://github.com/RLovelett/eigen
So I think I got the fix commit when I have downloaded the last dev. version of Eigen this morning.
Ok I insert in code https://github.com/openMVG/openMVG/blob/develop/src/software/SfM/clustering/domSetLibrary/domset.cc and uptdate eigen using bitbucket.org and compiling is OK but not linking using ceres-version 1.13.0 (windows 10-vs 2015 win64) ceres .lib is not found.
I changed cmakelists :
if (NOT Ceres_FOUND)
set(OpenMVG_USE_INTERNAL_CERES ON)
set(CERES_INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}/third_party/ceres-solver/include
${CMAKE_CURRENT_SOURCE_DIR}/third_party/ceres-solver/internal/ceres/miniglog
${PROJECT_BINARY_DIR}/third_party/ceres-solver/config)
FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/third_party/ceres-solver/VERSION" CERES_CONFIG)
STRING(REGEX REPLACE "version ([0-9.]+).*" "\\1" CERES_VERSION ${CERES_CONFIG})
set(CERES_LIBRARIES ceres cxsparse)
else()
message ("CeRES LIB ${CURRENT_ROOT_INSTALL_DIR}")
set(OpenMVG_USE_INTERNAL_CERES OFF)
set(CERES_LIBRARIES "${CURRENT_ROOT_INSTALL_DIR}/lib/ceres" cxsparse)
endif()
but error message is now G:\Lib\install\ceres-solver\lib\ceres.obj not found. Path is good but it is not an obj but .lib. I'm not a CMake expert...
Any ideas are welcome
I would adise you to use the internal ceres for an initial testing, since everything will compile & run fine.
${CERES_LIBRARIES}
must be sufficient. So you don't need to do an else close, since in other part of the code ${CERES_LIBRARIES}
is already used."else you can read http://ceres-solver.org/installation.html#using-ceres-with-cmake and see that using ${CERES_LIBRARIES} must be sufficient. So you don't need to do an else close, since in other part of the code ${CERES_LIBRARIES} is already used."
No problem is : I use cmake-gui. It is not possible to overwrite some cache variable with cmake-gui when you run twice cmake-gui. Hence I can change ceres_dir eigen but internal path are wrong.
Now using original cmakelists.txt and using git-bash I can compile link and install openMVG :
#!/bin/bash -e
myRepo=$(pwd)
CMAKE_CONFIG_GENERATOR="Visual Studio 14 2015 Win64"
RepoSource=openMVG
cd Build/$RepoSource
cmake -G"$CMAKE_CONFIG_GENERATOR" \
-DOpenMVG_USE_OPENCV:BOOL=ON \
-DOpenMVG_USE_OCVSIFT:BOOL=ON \
-DOpenCV_DIR:PATH="$myRepo"/install/opencv \
-DEIGEN_DIR:PATH="$myRepo"/eigen \
-DCeres_DIR="$myRepo"/install/ceres-solver/cmake \
-DCMAKE_INSTALL_PREFIX=../../install/"$RepoSource" ../../"$RepoSource"/src
cd ..
cmake --build $RepoSource --config debug
cmake --build $RepoSource --config release
cmake --build $RepoSource --target install --config release
cmake --build $RepoSource --target install --config debug
cd ..
Thanks for your help
You're welcome. Impatient to see some of your reconstructions ;-)