【问题标题】:CMake a project with OpenCV in Mac OS X - 'opencv2/opencv.hpp' file not foundCMake 在 Mac OS X 中使用 OpenCV 进行项目 - 找不到“opencv2/opencv.hpp”文件
【发布时间】:2015-08-24 16:57:45
【问题描述】:

我写了一个简单的opencv项目,只包含一个main.cpp文件:

// main.cpp
#include <opencv/cv.h>
#include <opencv2/opencv.hpp>
int main()
{
    cv::Mat I = cv::imread("img.png");
    cv::imshow("img",I);
    cv::waitKey(0);
    return 0;
}

然后构建它,我像这样写了一个CMakeLists.txt,实际上是从http://docs.opencv.org/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html复制过来的

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage main.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

在终端中,首先我运行cmake . 并生成了Makefile。然后我运行make 并得到以下错误:

fatal error: 
  'opencv2/opencv.hpp' file not found
#include <opencv2/opencv.hpp>
         ^
......

编译器似乎找不到 OpenCV 包含目录。但我不知道在哪里将它添加到CMakeLists.txt。我的平台是 Mac OS X 10.10,并且 OpenCV 包含和 lib 文件已经安装在 /usr/local/include/usr/local/lib 上。但是,在 Ubuntu 中,编译器可以找到它并成功构建项目。

那么在 Mac OS X 中正确的CMakeLists.txt 是什么?

【问题讨论】:

  • 根据错误描述,CMake似乎在你的Mac上找到了OpenCV(包含文件opencv/cv.h已成功处理)。但要么是 OpenCV 安装太旧,要么没有安装所有 OpenCV 组件,所以包含文件 opencv2/opencv.hpp 不存在。您可以在/usr/local/include 下手动检查两个包含文件是否存在。

标签: macos opencv cmake


【解决方案1】:

我终于真正阅读了通过 MacPorts 安装的 /opt/local/share/OpenCV/OpenCVConfig.cmake 的标题。要在外部项目中使用,它指示包括:

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(MY_TARGET_NAME ${OpenCV_LIBS})

(只需将 include_directories 添加到我的 CMakeLists.txt 即可为我解决此问题)

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 2016-06-26
    • 2019-11-20
    • 1970-01-01
    相关资源
    最近更新 更多