マシンにOpenCVの2つのバージョンがインストールされています。 1つは_/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が使用されます。インストール場所を知っている他のバージョン(3.1)を使用するようにCMakeLists.txtで指定するにはどうすればよいですか?私はもう試した:
_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が見つかります。どんな助けにも感謝します。ありがとうございました。
find_package documentation では、Sが欠落していたPATHS
で検索するパスを設定できることがあります...また、次のようなこともできます。
find_package (<package> PATHS paths... NO_DEFAULT_PATH)
find_package (<package>)
最初に記述したパスをチェックし、見つかった場合はfoundをtrueに設定し、2番目の命令はスキップされます。
また、新しいバージョンであるために3.4を選択しようとする場合、EXACT
オプションを使用して特定のバージョンに一致させることができます。
find_package(OpenCV 3.1 EXACT REQUIRED PATHS /usr/local/opencv3.1)
これがコメントを書くのに役立つことを願っています