J'ai 2 versions d'OpenCV installées sur ma machine. L'un est dans /usr/local/opencv3.1
. Je suppose que l’emplacement d’installation de l’autre version (version 3.4) est /usr/local
. Quoi qu'il en soit, find_package(OpenCV 3.0 REQUIRED)
définit OpenCV_DIR:PATH=/usr/local/share/OpenCV
. Ce dossier contient:
haarcascades OpenCVConfig.cmake OpenCVModules-release.cmake
Java OpenCVConfig-version.cmake valgrind_3rdparty.supp
lbpcascades OpenCVModules.cmake valgrind.supp
Dans ce cas, la version 3.4 est utilisée. Comment puis-je spécifier dans CMakeLists.txt d'utiliser l'autre version (3.1) en connaissant son emplacement d'installation? J'ai essayé:
find_package(OpenCV 3.0 REQUIRED PATH /usr/local/opencv3.1)
Ce qui retourne une erreur:
Could NOT find OpenCV (missing: PATH /usr/local/opencv3.1) (found suitable version "3.4.1", minimum required is "3.0")
et
set(OpenCV_DIR /usr/local/opencv3.1/OpenCV/*) # also tried OpenCV_ROOT_DIR, OPENCV_ROOT_DIR
find_package(OpenCV 3.0 REQUIRED)
Ce qui ne fait rien. Il trouve toujours la version 3.4. Je serais reconnaissant pour toute aide. Merci.
Dans le documentation de find_package vous avez que vous pouvez définir un chemin à rechercher avec PATHS
il vous manquait le S ... vous pouvez aussi faire quelque chose comme:
find_package (<package> PATHS paths... NO_DEFAULT_PATH)
find_package (<package>)
Ce qui vérifiera le chemin que vous avez écrit en premier, s'il est trouvé, il sera trouvé comme étant vrai et la deuxième instruction sera ignorée.
En outre, vous pouvez utiliser l'option EXACT
pour faire correspondre une version spécifique, au cas où elle essaie de sélectionner la version 3.4 car elle est une version plus récente.
find_package(OpenCV 3.1 EXACT REQUIRED PATHS /usr/local/opencv3.1)
J'espère que cela aide, sinon écrire un commentaire