【发布时间】:2016-06-26 10:09:24
【问题描述】:
我正在用 cmake 编译 opencv 程序。 代码如下:
DisplayImage.cpp:
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
set(OpenCV_DIR /home/lmk/opencv-3.1.0/release)
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
我将 DisplayImage.cpp 和 CMakeLists.txt 放在我个人主文件夹中名为 test 的文件夹中,即/home/lmk/test/。
然后我使用命令行:
lmk@lmk-virtual-machine:~/test$ mkdir build
lmk@lmk-virtual-machine:~/test$ cd build
lmk@lmk-virtual-machine:~/test/build$ cmake ..
哪个给我:
-- C 编译器标识为 GNU 5.3.0
-- CXX 编译器标识为 GNU 5.3.0
-- 检查工作的 C 编译器:/usr/bin/cc
-- 检查工作的 C 编译器:/usr/bin/cc -- 工作
-- 检测 C 编译器 ABI 信息
-- 检测 C 编译器 ABI 信息 - 完成
-- 检查工作的 CXX 编译器:/usr/bin/c++
-- 检查工作的 CXX 编译器:/usr/bin/c++ -- 工作
-- 检测 CXX 编译器 ABI 信息
-- 检测 CXX 编译器 ABI 信息 - 完成
-- 配置完成
-- 生成完成
-- 构建文件已写入:/home/lmk/test/build
但是当我使用时:
扫描目标DisplayImage的依赖关系
[100%] 构建 CXX 对象 CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o
/home/lmk/test/DisplayImage.cpp:2:30: 致命错误:opencv2/opencv.hpp:没有这样的文件或目录
编译终止。
make[2]: * [CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o] 错误 1
make[1]: * [CMakeFiles/DisplayImage.dir/all] 错误 2
make: *** [all] 错误 1
你知道为什么吗? 我在VM的ubuntu 14.04终端使用opencv 3.1.0和cmake 2.8.12.2!
【问题讨论】:
-
我已经通过修改 CMakeLists.txt 解决了这个错误:
cmake_minimum_required(VERSION 2.8) project( DisplayImage ) set(OpenCV_DIR /home/lmk/opencv-3.1.0/release) include_directories( /usr/local/opencv-3.1.0/include ) add_executable( DisplayImage DisplayImage.cpp ) target_link_libraries( DisplayImage /usr/local/opencv-3.1.0/lib )。但存在新错误:DisplayImage.cpp:(.text+0x34):undefined reference to ‘cv::imread(cv::String const&, int)’