--- /dev/null
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 9cfd06c..8859469 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -14,6 +14,7 @@ if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
+ message(FATAL_ERROR "In-source builds not allowed.")
+ endif()
+
++if(0)
+ # ==============================================================================
+ # OpenMVG build options
+ # ==============================================================================
+@@ -31,7 +32,7 @@ option(OpenMVG_USE_OPENMP "Enable OpenMP parallelization" ON)
+ # and openMVG simultaneously
+ # ==============================================================================
+ option(OpenMVG_USE_OPENCV "Build or not opencv+openMVG samples programs" OFF)
+-
++endif()
+ # ==============================================================================
+ # Since OpenCV 3, SIFT is no longer in the default modules. See
+ # https://github.com/itseez/opencv_contrib for more informations.
+@@ -85,6 +86,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ register_definitions(-DOPENMVG_STD_UNORDERED_MAP)
+ endif()
+
++if(0)
+ # ==============================================================================
+ # Check that submodule have been initialized and updated
+ # ==============================================================================
+@@ -93,6 +95,7 @@ if (NOT EXISTS ${PROJECT_SOURCE_DIR}/dependencies/cereal/include)
+ "\n submodule(s) are missing, please update your repository:\n"
+ " > git submodule update -i\n")
+ endif()
++endif()
+
+ # ==============================================================================
+ # Additional cmake find modules
+@@ -128,7 +131,6 @@ if (OpenMVG_USE_OPENMP)
+ find_package(OpenMP)
+ if (OPENMP_FOUND)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+- option(OpenMVG_USE_OPENMP "Use OpenMP for parallelization" ON)
+ register_definitions(-DOPENMVG_USE_OPENMP)
+ if (NOT MSVC)
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+@@ -139,11 +141,6 @@ if (OpenMVG_USE_OPENMP)
+ endif()
+ endif (NOT MSVC)
+ endif (OPENMP_FOUND)
+-else (OpenMVG_USE_OPENMP)
+- option(OpenMVG_USE_OPENMP "Use OpenMP for parallelization" OFF)
+- include(UpdateCacheVariable)
+- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OPENMP OFF)
+- remove_definitions(-DOPENMVG_USE_OPENMP)
+ endif (OpenMVG_USE_OPENMP)
+
+ # ==============================================================================
+@@ -160,10 +157,10 @@ endif()
+ # ==============================================================================
+ # IMAGE IO detection
+ # ==============================================================================
+-find_package(JPEG QUIET)
+-find_package(PNG QUIET)
+-find_package(TIFF QUIET)
+-
++find_package(JPEG REQUIRED)
++find_package(PNG REQUIRED)
++find_package(TIFF REQUIRED)
++find_package(vlfeat REQUIRED)
+ # Folders
+ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+
+@@ -182,6 +179,7 @@ if (OpenMVG_BUILD_OPENGL_EXAMPLES)
+ set_property(TARGET glfw PROPERTY FOLDER OpenMVG/3rdParty/glfw)
+ endif (OpenMVG_BUILD_OPENGL_EXAMPLES)
+
++if(0)
+ # Dependencies install rules
+ install(
+ DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/
+@@ -189,7 +187,7 @@ install(
+ COMPONENT headers
+ FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h"
+ )
+-
++endif()
+ # ==============================================================================
+ # --END-- SUBMODULE CONFIGURATION
+ # ==============================================================================
+@@ -225,6 +223,7 @@ ENDMACRO(UNIT_TEST)
+ # - external by default
+ # - internal if cereal not found
+ # ==============================================================================
++if(0)
+ find_package(cereal QUIET CONFIG)
+ if (NOT TARGET cereal)
+ add_library(cereal INTERFACE)
+@@ -237,6 +236,10 @@ if (NOT TARGET cereal)
+
+ set(OpenMVG_USE_INTERNAL_CEREAL ON)
+ endif()
++endif()
++
++find_package(cereal REQUIRED CONFIG)
++get_target_property(CEREAL_INCLUDE_DIRS cereal INTERFACE_INCLUDE_DIRECTORIES)
+
+ # ==============================================================================
+ # Eigen
+@@ -245,6 +248,7 @@ endif()
+ # - external if EIGEN_INCLUDE_DIR_HINTS is defined
+ # - internal if Eigen not found
+ # ==============================================================================
++if(0)
+ find_package(Eigen3 QUIET)
+ if (NOT Eigen3_FOUND)
+ set(EIGEN_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/eigen)
+@@ -253,13 +257,17 @@ if (NOT Eigen3_FOUND)
+ else()
+ set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
+ endif()
++endif()
+
++find_package(Eigen3 REQUIRED)
++set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
+ # ==============================================================================
+ # Ceres
+ # ==============================================================================
+ # - external by default if CERES_DIR_HINTS or find_package found a valid Ceres
+ # - internal if ceres not found (ceres-solver+cxsparse+miniglog)
+ # ==============================================================================
++if(0)
+ find_package(Ceres QUIET HINTS ${CERES_DIR_HINTS})
+ if (NOT Ceres_FOUND)
+ set(OpenMVG_USE_INTERNAL_CERES ON)
+@@ -271,13 +279,16 @@ if (NOT Ceres_FOUND)
+ STRING(REGEX REPLACE "version ([0-9.]+).*" "\\1" CERES_VERSION ${CERES_CONFIG})
+ set(CERES_LIBRARIES openMVG_ceres)
+ endif()
++endif()
+
++find_package(Ceres REQUIRED)
+ # ==============================================================================
+ # Flann
+ # ==============================================================================
+ # - internal by default (flann),
+ # - external if FLANN_INCLUDE_DIR_HINTS and a valid Flann setup is found
+ # ==============================================================================
++if(0)
+ if (NOT DEFINED FLANN_INCLUDE_DIR_HINTS)
+ set(FLANN_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/flann/src/cpp)
+ set(OpenMVG_USE_INTERNAL_FLANN ON)
+@@ -286,13 +297,16 @@ find_package(Flann QUIET)
+ if (NOT FLANN_FOUND OR OpenMVG_USE_INTERNAL_FLANN)
+ set(FLANN_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/flann/src/cpp)
+ endif()
++endif()
+
++find_package(flann REQUIRED)
+ # ==============================================================================
+ # CoinUtils
+ # ==============================================================================
+ # - internal by default (CoinUtils),
+ # - external if COINUTILS_INCLUDE_DIR_HINTS and a valid CoinUtils setup is found
+ # ==============================================================================
++if(0)
+ if (NOT DEFINED COINUTILS_INCLUDE_DIR_HINTS)
+ set(COINUTILS_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/CoinUtils/src/)
+ set(OpenMVG_USE_INTERNAL_COINUTILS ON)
+@@ -302,13 +316,16 @@ if (NOT DEFINED COINUTILS_INCLUDE_DIR_HINTS)
+ else()
+ find_package(CoinUtils QUIET)
+ endif()
++endif()
+
++find_package(CoinUtils REQUIRED)
+ ## ==============================================================================
+ ## Clp
+ ## ==============================================================================
+ ## - internal by default (Clp),
+ ## - external if CLP_INCLUDE_DIR_HINTS and a valid Clp setup is found
+ ## ==============================================================================
++if(0)
+ if (NOT DEFINED CLP_INCLUDE_DIR_HINTS)
+ set(CLP_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Clp/src/)
+ set(OpenMVG_USE_INTERNAL_CLP ON)
+@@ -320,6 +337,9 @@ if (NOT DEFINED CLP_INCLUDE_DIR_HINTS)
+ else()
+ find_package(Clp QUIET)
+ endif()
++endif()
++
++find_package(Clp REQUIRED)
+
+ # ==============================================================================
+ # Osi
+@@ -327,6 +347,7 @@ endif()
+ # - internal by default (Osi),
+ # - external if OSI_INCLUDE_DIR_HINTS and a valid Osi setup is found
+ # ==============================================================================
++if(0)
+ if (NOT DEFINED OSI_INCLUDE_DIR_HINTS)
+ set(OSI_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/osi_clp/Osi/src/)
+ set(OpenMVG_USE_INTERNAL_OSI ON)
+@@ -336,6 +357,9 @@ if (NOT DEFINED OSI_INCLUDE_DIR_HINTS)
+ else()
+ find_package(Osi QUIET)
+ endif()
++endif()
++
++find_package(Osi REQUIRED)
+
+ # ==============================================================================
+ # Internal CLP/OSI/COINUTILS libraries:
+@@ -354,6 +378,7 @@ endif()
+ # - internal by default (Lemon),
+ # - external if LEMON_INCLUDE_DIR_HINTS and a valid Lemon setup is found
+ # ==============================================================================
++if(0)
+ if (NOT DEFINED LEMON_INCLUDE_DIR_HINTS)
+ set(LEMON_INCLUDE_DIR_HINTS ${CMAKE_CURRENT_SOURCE_DIR}/third_party/lemon)
+ set(OpenMVG_USE_INTERNAL_LEMON ON)
+@@ -365,6 +390,9 @@ if (NOT LEMON_FOUND OR OpenMVG_USE_INTERNAL_LEMON)
+ ${PROJECT_BINARY_DIR}/third_party/lemon)
+ set(LEMON_LIBRARY openMVG_lemon)
+ endif()
++endif()
++
++find_package(LEMON REQUIRED)
+
+ # ==============================================================================
+ # OpenCV
+@@ -372,20 +400,13 @@ endif()
+ # - only external and enabled only if OpenMVG_USE_OPENCV is set to ON
+ # ==============================================================================
+ if (OpenMVG_USE_OPENCV)
+- find_package( OpenCV QUIET )
+- if (NOT OpenCV_FOUND OR OpenCV_VERSION VERSION_LESS "3.0.0")
+- message(STATUS "OpenCV was not found (note that OpenCV version >= 3.0.0 is required). -> Disabling OpenCV support.")
+- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OPENCV OFF)
+- UPDATE_CACHE_VARIABLE(OpenMVG_USE_OCVSIFT OFF)
+- endif()
++ find_package( OpenCV REQUIRED )
+ endif()
+
+-
+ # ==============================================================================
+ # Third-party libraries:
+ # ==============================================================================
+ add_subdirectory(third_party)
+-add_subdirectory(testing)
+
+ # ==============================================================================
+ # openMVG modules
+@@ -472,67 +493,67 @@ message("** Use OpenCV SIFT features: " ${OpenMVG_USE_OCVSIFT})
+
+ message("\n")
+
+-if (DEFINED OpenMVG_USE_INTERNAL_CEREAL)
++if (OpenMVG_USE_INTERNAL_CEREAL)
+ message(STATUS "CEREAL: (internal)")
+ else()
+ message(STATUS "CEREAL: (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_EIGEN)
++if (OpenMVG_USE_INTERNAL_EIGEN)
+ message(STATUS "EIGEN: " ${EIGEN_VERSION} " (internal)")
+ else()
+ message(STATUS "EIGEN: " ${EIGEN_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_CERES)
++if (OpenMVG_USE_INTERNAL_CERES)
+ message(STATUS "CERES: " ${CERES_VERSION} " (internal)")
+ else()
+ message(STATUS "CERES: " ${CERES_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_FLANN)
++if (OpenMVG_USE_INTERNAL_FLANN)
+ message(STATUS "FLANN: " ${FLANN_VERSION} " (internal)")
+ else()
+ message(STATUS "FLANN: " ${FLANN_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_TIFF)
++if (OpenMVG_USE_INTERNAL_TIFF)
+ message(STATUS "LIBTIFF: " ${TIFF_VERSION_STRING} " (internal)")
+ else()
+ message(STATUS "LIBTIFF: " ${TIFF_VERSION_STRING} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_PNG)
++if (OpenMVG_USE_INTERNAL_PNG)
+ message(STATUS "LIBPNG: " ${PNG_VERSION_STRING} " (internal)")
+ else()
+ message(STATUS "LIBPNG: " ${PNG_VERSION_STRING} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_JPEG)
++if (OpenMVG_USE_INTERNAL_JPEG)
+ message(STATUS "LIBJPEG (internal)")
+ else()
+ message(STATUS "LIBJPEG (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_CLP)
++if (OpenMVG_USE_INTERNAL_CLP)
+ message(STATUS "CLP: " ${CLP_VERSION} " (internal)")
+ else()
+ message(STATUS "CLP: " ${CLP_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_COINUTILS)
++if (OpenMVG_USE_INTERNAL_COINUTILS)
+ message(STATUS "COINUTILS: " ${COINUTILS_VERSION} " (internal)")
+ else()
+ message(STATUS "COINUTILS: " ${COINUTILS_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_OSI)
++if (OpenMVG_USE_INTERNAL_OSI)
+ message(STATUS "OSI: " ${OSI_VERSION} " (internal)")
+ else()
+ message(STATUS "OSI: " ${OSI_VERSION} " (external)")
+ endif()
+
+-if (DEFINED OpenMVG_USE_INTERNAL_LEMON)
++if (OpenMVG_USE_INTERNAL_LEMON)
+ message(STATUS "LEMON: " ${LEMON_VERSION} " (internal)")
+ else()
+ message(STATUS "LEMON: " ${LEMON_VERSION} " (external)")
+diff --git a/src/cmakeFindModules/FindClp.cmake b/src/cmakeFindModules/FindClp.cmake
+index 8a69c23..6a81580 100644
+--- a/src/cmakeFindModules/FindClp.cmake
++++ b/src/cmakeFindModules/FindClp.cmake
+@@ -51,9 +51,8 @@ IF(EXISTS "${CLP_DIR}" AND NOT "${CLP_DIR}" STREQUAL "")
+ SET(CLP_INCLUDE_DIR ${CLP_DIR})
+
+ FIND_LIBRARY(CLP_LIBRARY NAMES Clp)
+- FIND_LIBRARY(CLPSOLVER_LIBRARY NAMES ClpSolver)
+- FIND_LIBRARY(OSICLP_LIBRARY NAMES OsiClp)
+-
++ FIND_LIBRARY(CLPSOLVER_LIBRARY NAMES ClpSolver Clp)
++ FIND_LIBRARY(OSICLP_LIBRARY NAMES OsiClp Clp)
+ # locate Clp libraries
+ IF(DEFINED CLP_LIBRARY AND DEFINED CLPSOLVER_LIBRARY AND DEFINED OSICLP_LIBRARY)
+ SET(CLP_LIBRARIES ${CLP_LIBRARY} ${CLPSOLVER_LIBRARY} ${OSICLP_LIBRARY})
+diff --git a/src/cmakeFindModules/OpenMVGConfig.cmake.in b/src/cmakeFindModules/OpenMVGConfig.cmake.in
+index e7dfbfd..c01910d 100644
+--- a/src/cmakeFindModules/OpenMVGConfig.cmake.in
++++ b/src/cmakeFindModules/OpenMVGConfig.cmake.in
+@@ -19,7 +19,7 @@
+ # OPENMVG_VERSION: Version of OpenMVG found.
+ #
+
+-# Called if we failed to find OpenMVG or any of it's required dependencies,
++# Called if we failed to find OpenMVG or any of its required dependencies,
+ # unsets all public (designed to be used externally) variables and reports
+ # error message at priority depending upon [REQUIRED/QUIET/<NONE>] argument.
+ macro(OPENMVG_REPORT_NOT_FOUND REASON_MSG)
+@@ -59,9 +59,19 @@ set(CALLERS_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
+ # script.
+ set(CMAKE_MODULE_PATH ${CURRENT_CONFIG_INSTALL_DIR})
+
++include(CMakeFindDependencyMacro)
++find_dependency(CoinUtils)
++find_dependency(Clp)
++find_dependency(Osi)
++find_dependency(flann)
++find_dependency(Threads)
++find_dependency(cereal)
++find_dependency(Ceres)
++find_dependency(vlfeat)
++
+ # Build the absolute root install directory as a relative path
+ get_filename_component(CURRENT_ROOT_INSTALL_DIR
+- ${CMAKE_MODULE_PATH}/../../../ ABSOLUTE)
++ ${CMAKE_MODULE_PATH}/../../ ABSOLUTE)
+ if (NOT EXISTS ${CURRENT_ROOT_INSTALL_DIR})
+ OPENMVG_REPORT_NOT_FOUND(
+ "OpenMVG install root: ${CURRENT_ROOT_INSTALL_DIR}, "
+diff --git a/src/nonFree/sift/CMakeLists.txt b/src/nonFree/sift/CMakeLists.txt
+index 402a2d8..60ddc11 100644
+--- a/src/nonFree/sift/CMakeLists.txt
++++ b/src/nonFree/sift/CMakeLists.txt
+@@ -1,36 +1,36 @@
+
+-# libs should be static
+-set(BUILD_SHARED_LIBS OFF)
+-
+-# use PIC code for link into shared lib
+-if(UNIX)
+- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+-endif(UNIX)
+-
+-if(NOT USE_SSE2)
+- add_definitions(-DVL_DISABLE_SSE2)
+-endif()
+-
+-add_definitions(-DVL_DISABLE_THREADS)
+-
+-include_directories(./vl)
+-set(FEATS
+- vl/generic.c
+- vl/imopv_sse2.c
+- vl/sift.c
+- vl/imopv.c
+- vl/mathop_sse2.c
+- vl/sift.c
+- vl/host.c
+- vl/mathop.c
+- vl/random.c)
+-set_source_files_properties(${FEATS} PROPERTIES LANGUAGE C)
+-add_library(vlsift ${FEATS})
+-install(TARGETS vlsift DESTINATION lib EXPORT openMVG-targets)
+-set_property(TARGET vlsift PROPERTY FOLDER OpenMVG/nonFree)
++## libs should be static
++#set(BUILD_SHARED_LIBS OFF)
++#
++## use PIC code for link into shared lib
++#if(UNIX)
++# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
++#endif(UNIX)
++#
++#if(NOT USE_SSE2)
++# add_definitions(-DVL_DISABLE_SSE2)
++#endif()
++#
++#add_definitions(-DVL_DISABLE_THREADS)
++#
++#include_directories(./vl)
++#set(FEATS
++# vl/generic.c
++# vl/imopv_sse2.c
++# vl/sift.c
++# vl/imopv.c
++# vl/mathop_sse2.c
++# vl/sift.c
++# vl/host.c
++# vl/mathop.c
++# vl/random.c)
++#set_source_files_properties(${FEATS} PROPERTIES LANGUAGE C)
++#add_library(vlsift ${FEATS})
++#install(TARGETS vlsift DESTINATION lib EXPORT openMVG-targets)
++#set_property(TARGET vlsift PROPERTY FOLDER OpenMVG/nonFree)
+ install(
+ DIRECTORY .
+ DESTINATION include/openMVG_dependencies/nonFree/sift
+ COMPONENT headers
+- FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h"
++ FILES_MATCHING PATTERN "*.hpp"
+ )
+diff --git a/src/nonFree/sift/SIFT_describer.hpp b/src/nonFree/sift/SIFT_describer.hpp
+index cd800b0..20e9c8e 100644
+--- a/src/nonFree/sift/SIFT_describer.hpp
++++ b/src/nonFree/sift/SIFT_describer.hpp
+@@ -17,9 +17,7 @@
+ #include <iostream>
+ #include <numeric>
+
+-extern "C" {
+-#include "nonFree/sift/vl/sift.h"
+-}
++#include <sift.h>
+
+ namespace openMVG {
+ namespace features {
+@@ -174,7 +172,7 @@ public:
+ const int nkeys = vl_sift_get_nkeypoints(filt);
+
+ // Update gradient before launching parallel extraction
+- vl_sift_update_gradient(filt);
++ update_gradient(filt);
+
+ #ifdef OPENMVG_USE_OPENMP
+ #pragma omp parallel for private(descr, descriptor)
+diff --git a/src/openMVG/linearProgramming/CMakeLists.txt b/src/openMVG/linearProgramming/CMakeLists.txt
+index cc5212f..acc57dd 100644
+--- a/src/openMVG/linearProgramming/CMakeLists.txt
++++ b/src/openMVG/linearProgramming/CMakeLists.txt
+@@ -15,16 +15,12 @@ target_link_libraries(openMVG_linearProgramming
+ PUBLIC
+ openMVG_numeric
+ PRIVATE
+- ${CLP_LIBRARIES} # clp + solver wrapper
+- ${COINUTILS_LIBRARY} # container tools
+- ${OSI_LIBRARY} # generic LP
++ Coin::Clp # clp + solver wrapper
++ Coin::CoinUtils # container tools
++ Coin::Osi # generic LP
+ )
+
+ target_include_directories(openMVG_linearProgramming
+- PRIVATE
+- ${CLP_INCLUDE_DIRS}
+- ${COINUTILS_INCLUDE_DIRS}
+- ${OSI_INCLUDE_DIRS}
+ PUBLIC
+ $<INSTALL_INTERFACE:include>
+ )
+diff --git a/src/openMVG/matching/CMakeLists.txt b/src/openMVG/matching/CMakeLists.txt
+index 5fcd972..b21ea7b 100644
+--- a/src/openMVG/matching/CMakeLists.txt
++++ b/src/openMVG/matching/CMakeLists.txt
+@@ -18,6 +18,7 @@ list(REMOVE_ITEM matching_files_cpp ${REMOVEFILESUNITTEST})
+
+ set(THREADS_PREFER_PTHREAD_FLAG ON)
+ find_package(Threads REQUIRED)
++find_package(flann REQUIRED)
+
+ set_source_files_properties(${matching_files_cpp} PROPERTIES LANGUAGE CXX)
+ add_library(openMVG_matching
+@@ -39,10 +40,10 @@ target_link_libraries(openMVG_matching
+ Threads::Threads
+ cereal
+ )
+-if (NOT DEFINED OpenMVG_USE_INTERNAL_FLANN)
++if (NOT OpenMVG_USE_INTERNAL_FLANN)
+ target_link_libraries(openMVG_matching
+ PUBLIC
+- ${FLANN_LIBRARIES}
++ flann::flann
+ )
+ endif()
+ set_target_properties(openMVG_matching PROPERTIES SOVERSION ${OPENMVG_VERSION_MAJOR} VERSION "${OPENMVG_VERSION_MAJOR}.${OPENMVG_VERSION_MINOR}")
+diff --git a/src/openMVG/numeric/CMakeLists.txt b/src/openMVG/numeric/CMakeLists.txt
+index 1f3fc30..4097320 100644
+--- a/src/openMVG/numeric/CMakeLists.txt
++++ b/src/openMVG/numeric/CMakeLists.txt
+@@ -26,7 +26,7 @@ target_include_directories(openMVG_numeric
+ $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:include>
+ )
+-if (DEFINED OpenMVG_USE_INTERNAL_EIGEN)
++if (OpenMVG_USE_INTERNAL_EIGEN)
+ target_include_directories(openMVG_numeric PUBLIC
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/eigen/>)
+ else()
+diff --git a/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt b/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt
+index 862ffc7..326fc9a 100644
+--- a/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt
++++ b/src/openMVG_Samples/describe_and_match_GUI/CMakeLists.txt
+@@ -18,7 +18,7 @@ if (OpenMVG_BUILD_GUI_SOFTWARES)
+ add_executable( openMVG_sample_describe_and_match_GUI WIN32 ${FEATURES_PAIR_DEMO_SRCS} ${FEATURES_PAIR_DEMO_HDRS} )
+ endif( APPLE )
+
+- target_link_libraries( openMVG_sample_describe_and_match_GUI Qt5::Widgets openMVG_features openMVG_image openMVG_matching vlsift )
++ target_link_libraries( openMVG_sample_describe_and_match_GUI Qt5::Widgets openMVG_features openMVG_image openMVG_matching unofficial::vlfeat::vl )
+
+ set_target_properties( openMVG_sample_describe_and_match_GUI PROPERTIES CXX_STANDARD 11)
+
+diff --git a/src/openMVG_Samples/features_image_matching/CMakeLists.txt b/src/openMVG_Samples/features_image_matching/CMakeLists.txt
+index 18fb385..d44ffce 100644
+--- a/src/openMVG_Samples/features_image_matching/CMakeLists.txt
++++ b/src/openMVG_Samples/features_image_matching/CMakeLists.txt
+@@ -5,7 +5,7 @@ target_link_libraries(openMVG_sample_image_matching
+ openMVG_features
+ openMVG_matching
+ ${STLPLUS_LIBRARY}
+- vlsift)
++ unofficial::vlfeat::vl)
+ target_compile_definitions(openMVG_sample_image_matching
+ PRIVATE -DTHIS_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
+
+diff --git a/src/openMVG_Samples/features_repeatability/CMakeLists.txt b/src/openMVG_Samples/features_repeatability/CMakeLists.txt
+index fd2b7c6..91f2766 100644
+--- a/src/openMVG_Samples/features_repeatability/CMakeLists.txt
++++ b/src/openMVG_Samples/features_repeatability/CMakeLists.txt
+@@ -6,7 +6,7 @@ target_link_libraries(openMVG_sample_main_features_repeatability_dataset
+ openMVG_matching
+ openMVG_system
+ openMVG_multiview
+- vlsift
++ unofficial::vlfeat::vl
+ ${STLPLUS_LIBRARY})
+
+ set_property(TARGET openMVG_sample_main_features_repeatability_dataset PROPERTY FOLDER OpenMVG/Samples)
+diff --git a/src/software/Localization/CMakeLists.txt b/src/software/Localization/CMakeLists.txt
+index 2f60393..0d57d0a 100644
+--- a/src/software/Localization/CMakeLists.txt
++++ b/src/software/Localization/CMakeLists.txt
+@@ -11,7 +11,7 @@ target_link_libraries(openMVG_main_SfM_Localization
+ openMVG_sfm
+ openMVG_exif
+ ${STLPLUS_LIBRARY}
+- vlsift
++ unofficial::vlfeat::vl
+ )
+
+ # Installation rules
+diff --git a/src/software/SfM/CMakeLists.txt b/src/software/SfM/CMakeLists.txt
+index 013a6c8..f38daa9 100644
+--- a/src/software/SfM/CMakeLists.txt
++++ b/src/software/SfM/CMakeLists.txt
+@@ -44,7 +44,7 @@ target_link_libraries(openMVG_main_ComputeFeatures
+ openMVG_multiview
+ openMVG_sfm
+ ${STLPLUS_LIBRARY}
+- vlsift
++ unofficial::vlfeat::vl
+ )
+ if (MSVC)
+ set_target_properties(openMVG_main_ComputeFeatures PROPERTIES COMPILE_FLAGS "/bigobj")
+@@ -235,7 +235,7 @@ if(OpenMVG_USE_OPENCV)
+ openMVG_multiview
+ openMVG_sfm
+ ${STLPLUS_LIBRARY}
+- vlsift
++ unofficial::vlfeat::vl
+ ${OpenCV_LIBS})
+ target_include_directories(openMVG_main_ComputeFeatures_OpenCV PRIVATE ${OpenCV_INCLUDE_DIRS})
+
+diff --git a/src/software/SfM/SfM_GlobalPipeline.py.in b/src/software/SfM/SfM_GlobalPipeline.py.in
+index 42405a4..28b0246 100644
+--- a/src/software/SfM/SfM_GlobalPipeline.py.in
++++ b/src/software/SfM/SfM_GlobalPipeline.py.in
+@@ -21,7 +21,7 @@
+ OPENMVG_SFM_BIN = "@OPENMVG_SOFTWARE_SFM_BUILD_DIR@"
+
+ # Indicate the openMVG camera sensor width directory
+-CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_SOFTWARE_SFM_SRC_DIR@" + "/../../openMVG/exif/sensor_width_database"
++CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_CAMERA_SENSOR_WIDTH_DIRECTORY@"
+
+ import os
+ import subprocess
+@@ -77,5 +77,3 @@ pRecons.wait()
+
+ pRecons = subprocess.Popen( [os.path.join(OPENMVG_SFM_BIN, "openMVG_main_ComputeSfM_DataColor"), "-i", reconstruction_dir+"/robust.bin", "-o", os.path.join(reconstruction_dir,"robust_colorized.ply")] )
+ pRecons.wait()
+-
+-
+diff --git a/src/software/SfM/SfM_SequentialPipeline.py.in b/src/software/SfM/SfM_SequentialPipeline.py.in
+index 9a5a482..e804a19 100644
+--- a/src/software/SfM/SfM_SequentialPipeline.py.in
++++ b/src/software/SfM/SfM_SequentialPipeline.py.in
+@@ -21,7 +21,7 @@
+ OPENMVG_SFM_BIN = "@OPENMVG_SOFTWARE_SFM_BUILD_DIR@"
+
+ # Indicate the openMVG camera sensor width directory
+-CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_SOFTWARE_SFM_SRC_DIR@" + "/../../openMVG/exif/sensor_width_database"
++CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_CAMERA_SENSOR_WIDTH_DIRECTORY@"
+
+ import os
+ import subprocess
+@@ -77,5 +77,3 @@ pRecons.wait()
+
+ pRecons = subprocess.Popen( [os.path.join(OPENMVG_SFM_BIN, "openMVG_main_ComputeSfM_DataColor"), "-i", reconstruction_dir+"/robust.bin", "-o", os.path.join(reconstruction_dir,"robust_colorized.ply")] )
+ pRecons.wait()
+-
+-
+diff --git a/src/software/SfM/main_ComputeFeatures_OpenCV.cpp b/src/software/SfM/main_ComputeFeatures_OpenCV.cpp
+index 9cc46af..f8bd892 100644
+--- a/src/software/SfM/main_ComputeFeatures_OpenCV.cpp
++++ b/src/software/SfM/main_ComputeFeatures_OpenCV.cpp
+@@ -208,7 +208,7 @@ public:
+ // Create a SIFT detector
+ std::vector< cv::KeyPoint > v_keypoints;
+ cv::Mat m_desc;
+- cv::Ptr<cv::Feature2D> siftdetector = cv::xfeatures2d::SIFT::create();
++ cv::Ptr<cv::Feature2D> siftdetector = cv::SIFT::create();
+
+ // Process SIFT computation
+ siftdetector->detectAndCompute(img, m_mask, v_keypoints, m_desc);
+diff --git a/src/software/SfM/tutorial_demo.py.in b/src/software/SfM/tutorial_demo.py.in
+index 259e24e..1097062 100644
+--- a/src/software/SfM/tutorial_demo.py.in
++++ b/src/software/SfM/tutorial_demo.py.in
+@@ -12,7 +12,7 @@
+ OPENMVG_SFM_BIN = "@OPENMVG_SOFTWARE_SFM_BUILD_DIR@"
+
+ # Indicate the openMVG camera sensor width directory
+-CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_SOFTWARE_SFM_SRC_DIR@" + "/../../openMVG/exif/sensor_width_database"
++CAMERA_SENSOR_WIDTH_DIRECTORY = "@OPENMVG_CAMERA_SENSOR_WIDTH_DIRECTORY@"
+
+ import os
+ import subprocess
+@@ -89,5 +89,3 @@ pRecons.wait()
+ print ("4. Structure from Known Poses (robust triangulation)")
+ pRecons = subprocess.Popen( [os.path.join(OPENMVG_SFM_BIN, "openMVG_main_ComputeStructureFromKnownPoses"), "-i", reconstruction_dir+"/sfm_data.bin", "-m", matches_dir, "-o", os.path.join(reconstruction_dir,"robust.ply")] )
+ pRecons.wait()
+-
+-
+diff --git a/src/software/VO/Tracker_opencv_klt.hpp b/src/software/VO/Tracker_opencv_klt.hpp
+index aa7dffe..2c4d237 100644
+--- a/src/software/VO/Tracker_opencv_klt.hpp
++++ b/src/software/VO/Tracker_opencv_klt.hpp
+@@ -80,7 +80,7 @@ struct Tracker_opencv_KLT : public Abstract_Tracker
+ std::vector<cv::KeyPoint> m_nextKeypoints;
+
+ cv::Ptr<cv::FeatureDetector> m_detector = cv::GFTTDetector::create(count);
+- if (m_detector == NULL)
++ if (m_detector == nullptr)
+ return false;
+
+ m_detector->detect(current_img, m_nextKeypoints);
+diff --git a/src/third_party/CMakeLists.txt b/src/third_party/CMakeLists.txt
+index b71dfab..ad98e51 100644
+--- a/src/third_party/CMakeLists.txt
++++ b/src/third_party/CMakeLists.txt
+@@ -18,7 +18,7 @@ add_subdirectory(stlplus3)
+ set(STLPLUS_LIBRARY openMVG_stlplus PARENT_SCOPE)
+
+ # Add graph library
+-if(DEFINED OpenMVG_USE_INTERNAL_LEMON)
++if(OpenMVG_USE_INTERNAL_LEMON)
+ add_subdirectory(lemon)
+ set_property(TARGET openMVG_lemon PROPERTY FOLDER OpenMVG/3rdParty/lemon)
+ set_property(TARGET check PROPERTY FOLDER OpenMVG/3rdParty/lemon)
+@@ -68,7 +68,7 @@ endif (NOT TIFF_FOUND)
+ add_subdirectory(vectorGraphics)
+
+ # Add ceres-solver (A Nonlinear Least Squares Minimizer)
+-if (DEFINED OpenMVG_USE_INTERNAL_CERES)
++if (OpenMVG_USE_INTERNAL_CERES)
+ add_subdirectory(cxsparse)
+ add_subdirectory(ceres-solver)
+ set_property(TARGET openMVG_cxsparse PROPERTY FOLDER OpenMVG/3rdParty/ceres)
+@@ -76,7 +76,7 @@ if (DEFINED OpenMVG_USE_INTERNAL_CERES)
+ endif()
+
+ # Add an Approximate Nearest Neighbor library
+-if (DEFINED OpenMVG_USE_INTERNAL_FLANN)
++if (OpenMVG_USE_INTERNAL_FLANN)
+ set(FLANN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/flann/src/cpp)
+ add_subdirectory(flann)
+ endif()
+@@ -90,7 +90,7 @@ add_subdirectory(fast)
+ ##
+ # Install Header only libraries if necessary
+ ##
+-if (DEFINED OpenMVG_USE_INTERNAL_EIGEN)
++if (OpenMVG_USE_INTERNAL_EIGEN)
+ #Configure Eigen install
+ set(EIGEN_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include/openMVG/third_party/eigen)
+ add_subdirectory(eigen)