cmake find_package指定路径

问题描述 投票:7回答:1

我的机器上安装了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。我会感激任何帮助。谢谢。

c++ opencv cmake linker shared-libraries
1个回答
10
投票

find_package documentation你有你可以设置一个路径,用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)

我希望这有助于,如果没有,写一个评论

© www.soinside.com 2019 - 2024. All rights reserved.