我正在用cmake编译opencv程序。
代码如下:
显示图像.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虚拟机:~/test$mkdir build
lmk@lmk虚拟机:~/test$cd build
lmk@lmk虚拟机:~/test/build$cmake。。
给了我:
--C编译器标识是GNU5.3.0
--CXX编译器标识是GNU 5.3.0
--检查工作的C编译器/usr/bin/C C
--检查工作的C编译器:/usr/bin/C C--works
--检测C编译器ABI信息
--检测C编译器ABI info-done
--检查CXX编译器是否正常工作/usr/bin/c++
--检查CXX编译器是否正常工作/usr/bin/c++--works
--正在检测CXX编译器ABI信息
--检测CXX编译器ABI信息-完成
--配置完成
--生成完成
--生成文件已写入/home/lmk/test/Build
但当我使用:
目标显示图像的扫描依赖关系
[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!
最佳答案
为什么不使用“典型”方式,使用find_package()
?
尝试重复this教程中的步骤,并报告正在发生的事情。