【问题标题】:Set Opencv path for a c++ project using Cmake使用 Cmake 为 c++ 项目设置 Opencv 路径
【发布时间】:2016-05-20 01:43:26
【问题描述】:

我有两个Opencv,opencv-2.4.10安装在/usr,opencv-3.1安装在/usr/local。我可以轻松地在 Eclipse 中设置 opencv 路径。在 cmake 中,如何设置我喜欢用于该项目的 opencvs 之一的路径? 谢谢

【问题讨论】:

标签: opencv cmake


【解决方案1】:

这个问题与How to force c++ compiler use one of different installed package's versions, using CMake? 重复,但它被搜索引擎发现,所以我添加了answer from texasflood,我发现它可以在 Ubuntu 12.4 上使用 CMake 2.8.12.2 和 OpenCV 3.2.0:

只需更改find_package 命令:

find_package(OpenCV REQUIRED PATHS "/usr/opencv-2.4.10")

【讨论】:

    【解决方案2】:

    其他答案都不适合我(linux,opencv 4.0.0,尚未使用 opencv 3.x.x 进行测试)。

    在 CMakeLists.txt 中的 find_package(...) 行之前添加以下内容:

    set(OpenCV_DIR /path/to/opencv_install_dir/lib/cmake/opencv4)
    

    如果opencv是用非标准安装目标目录从源代码编译的,那么/path/to/opencv_install_dir是(应该)已知的,否则搜索目录结构的位置lib/cmake/opencv*

    【讨论】:

    • 您可能需要为 dir 路径添加双引号,如下所示:set(OpenCV_DIR "/path/to/opencv_dir/)"
    【解决方案3】:

    我没有在 Linux 机器上对其进行测试,但这是我在 Windows 10 64 位上进行测试的方式。

    我只在程序的CmakeLists.txt中添加了一行来设置CMake使用的变量OpenCV_DIR

    比如C:/opencv中安装了OpenCV,我加了

    SET("OpenCV_DIR" "C:/opencv")
    

    在我的CMakeLists.txt

    在你的情况下,它应该是这样的

    SET("OpenCV_DIR" "/usr/opencv-2.4.10")
    

    但是,正如我所说,我从未在 Linux 上测试过。

    【讨论】:

    • 还没有。我设置为 SET("OpenCV_DIR" "/usr/share/OpenCV")。但它没有链接。
    • @batuman 确保您的 CMakeLists 中还有以下行:find_package(OpenCV REQUIRED)、include_directories(${OpenCV_INCLUDE_DIRS}) 和 target_link_libraries(Program ${OpenCV_LIBS})。否则它不会做任何事情
    • 还要确保您指定的目录是构建 OpenCV 的目录,而不是源代码。
    • 对我不起作用(CMake 2.8.12.2、OpenCV 3.2.0、Ubuntu 12.4),请参阅我的答案。
    猜你喜欢
    • 2022-01-06
    • 2012-09-22
    • 2015-03-19
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多