首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cmake find_package指定路径

cmake find_package指定路径
EN

Stack Overflow用户
提问于 2018-04-13 19:43:37
回答 1查看 56.2K关注 0票数 27

我的机器上安装了两个版本的OpenCV。一个是在/usr/local/opencv3.1中。我假设另一个(版本3.4)的安装位置是/usr/local。不管怎样,find_package(OpenCV 3.0 REQUIRED)设置了OpenCV_DIR:PATH=/usr/local/share/OpenCV。此文件夹包含:

代码语言:javascript
复制
haarcascades  OpenCVConfig.cmake          OpenCVModules-release.cmake
java          OpenCVConfig-version.cmake  valgrind_3rdparty.supp
lbpcascades   OpenCVModules.cmake         valgrind.supp

在这种情况下,使用版本3.4。如何在知道其安装位置的情况下在CMakeLists.txt中指定使用其他版本(3.1)?我试过了:

代码语言:javascript
复制
find_package(OpenCV 3.0 REQUIRED PATH /usr/local/opencv3.1)

这将返回一个错误:

代码语言:javascript
复制
Could NOT find OpenCV (missing: PATH /usr/local/opencv3.1) (found suitable version "3.4.1", minimum required is "3.0")

代码语言:javascript
复制
set(OpenCV_DIR /usr/local/opencv3.1/OpenCV/*) # also tried OpenCV_ROOT_DIR, OPENCV_ROOT_DIR
find_package(OpenCV 3.0 REQUIRED)

它什么也做不了。它仍然会找到3.4版。如果有任何帮助,我将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-13 20:00:15

在您拥有的find_package documentation中,您可以使用PATHS设置要搜索的路径。您还可以执行以下操作:

代码语言:javascript
复制
find_package (<package> PATHS paths... NO_DEFAULT_PATH)
find_package (<package>)

这将检查您首先写入的路径,如果找到,则将found设置为true,并跳过第二条指令。

此外,您可以使用EXACT选项来匹配特定的版本,以防它因为是较新的版本而尝试选择3.4。

代码语言:javascript
复制
find_package(OpenCV 3.1 EXACT REQUIRED PATHS /usr/local/opencv3.1)

我希望这会有帮助,如果不能,请写一条评论

票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49816206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档