cmake find_package указать путь
У меня на компьютере установлено 2 версии OpenCV. Один в /usr/local/opencv3.1
, Я предполагаю, что место установки другого (версия 3.4) /usr/local
, Тем не мение, find_package(OpenCV 3.0 REQUIRED)
наборы OpenCV_DIR:PATH=/usr/local/share/OpenCV
, Эта папка содержит:
haarcascades OpenCVConfig.cmake OpenCVModules-release.cmake
java OpenCVConfig-version.cmake valgrind_3rdparty.supp
lbpcascades OpenCVModules.cmake valgrind.supp
В этом случае используется версия 3.4. Как я могу указать в CMakeLists.txt использовать другую версию (3.1), зная ее место установки? Я пробовал:
find_package(OpenCV 3.0 REQUIRED PATH /usr/local/opencv3.1)
Который возвращает ошибку:
Could NOT find OpenCV (missing: PATH /usr/local/opencv3.1) (found suitable version "3.4.1", minimum required is "3.0")
а также
set(OpenCV_DIR /usr/local/opencv3.1/OpenCV/*) # also tried OpenCV_ROOT_DIR, OPENCV_ROOT_DIR
find_package(OpenCV 3.0 REQUIRED)
Который ничего не делает. Он все еще находит версию 3.4. Буду благодарен за любую помощь. Спасибо.
1 ответ
В документации по find_package вы можете указать путь для поиска PATHS
Вы скучали по S... также вы можете сделать что-то вроде:
find_package (<package> PATHS paths... NO_DEFAULT_PATH)
find_package (<package>)
Который проверит путь, который вы написали первым, если он найден, он установит для параметра true значение, и вторая инструкция будет пропущена.
Также вы можете использовать EXACT
опция, соответствующая конкретной версии, в случае, если она пытается выбрать 3.4 из-за более новой версии.
find_package(OpenCV 3.1 EXACT REQUIRED PATHS /usr/local/opencv3.1)
Надеюсь, это поможет, если нет, напишите комментарий