CmakeList.txt
# requirement of cmake version
cmake_minimum_required(VERSION 3.10)
set(Project_Name OpencvTest)
set(SRC_LIST OpencvTest.cpp)
set(OpenCV_LIB "D:\\lufiles\\opencv310\\build\\x64\\vc14\\lib")
set(Opencv_Include "D:\\lufiles\\opencv310\\build\\include")
# set(OpenCV_LIB "D:\\lufiles\\opencv310\\build\\") # 这两个目录中都包含 OpenCVConfig.cmake 文件,两种设置都可以构建项目
PROJECT(${Project_Name})
include_directories(${Opencv_Include})
link_directories(${OpenCV_LIB})
add_executable(${Project_Name} ${SRC_LIST})
target_link_libraries(${Project_Name} opencv_world310d.lib)
OpencvTest.cpp
#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv
using namespace std
int main(int, char**)
{
Mat frame
//--- INITIALIZE VIDEOCAPTURE
VideoCapture cap
// open the default camera using default API
// cap.open(0)
// OR advance usage: select any API backend
int deviceID = 0 // 0 = open default camera
int apiID = cv::CAP_ANY // 0 = autodetect default API
// open selected camera using selected API
cap.open(deviceID + apiID)
// check if we succeeded
if (!cap.isOpened()) {
cerr <<"ERROR! Unable to open camera\n"
return -1
}
//--- GRAB AND WRITE LOOP
cout <<"Start grabbing" <<endl
<<"Press any key to terminate" <<endl
for ()
{
// wait for a new frame from camera and store it into 'frame'
cap.read(frame)
// check if we succeeded
if (frame.empty()) {
cerr <<"ERROR! blank frame grabbed\n"
break
}
// show live and wait for a key with timeout long enough to show images
imshow("Live", frame)
if (waitKey(5) >= 0)
break
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0
}
通过如下方式配置opencv时,有些时候,cmake找不到opencv而报错
这时有两种方式解决这个问题。分别如下:
在CMakeLists.txt中指明OpenCV_DIR
添加环境变量 OpenCV_DIR ,值为能找到OpenCVConfig.cmake或者OpenCVConfig-version.cmake的opencv路径
这样就不用在CMakeLists.txt中添加 OpenCV_DIR 的配置了。cmake会自动找到opencv。
在终端窗口中输入:
export OpenCV_DIR=/usr/local/opencv-3.1.0
编辑/edt/profile 文件
sudo gedit /edt/profile
添加如下语句
export OpenCV_DIR=/usr/local/opencv-3.1.0
编辑完退出
使配置生效
source /etc/profile
机某盘建新文件夹我完整路径:D:\CMake\CMake-Study\HelloCMakeHelloCMake文件夹建立HelloCMake.cpp文件面代码:#include
int main()
{
std::cout<<"Study CMake Together - Hello CMake!"<<std::endl
return 0
}
HelloCMake文件夹建立CMakeLists.txt文件注意文件名能别必须叫名字面内容:
cmake_minimum_required(VERSION 2.6)
project(HelloCmake)
add_executable(HelloCMake hellocmake.cpp)
接着HelloCMake同级目录建立新文件夹叫做HelloCMake-bin我机完整路径:D:\CMake\CMake-Study\HelloCMake-bin针自目录路径号入座
打CMake程序界面图(1):
图(1)
图(2)
接着包含CMakeLists.txtHelloCMake.cpp文件完整路径给where is the source code建立HelloCMake-bin目录完整路径给where to build the binaries按Cofigure界面图(2)
Configure完再按Generate直所红色选项都变灰色止界面图(3)打HelloCMake-bin发现原空文件夹面自文件图(4)
图(3)
图(4)
止工程构建完打HelloCMake-bin目录HelloCMake.sln面三工程别:ALL_BUILD;HelloCMake;ZERO_CHECK三工程概作用(理解已)HelloCMake用说自要建立工程;ALL_BUILD管理整项目工程;ZERO_CHECK实监视CMakeLists.txt文件变化工程旦CMakeLists.txt内容发任何变化ZERO_CHECK告诉编译器要重新构建整工程环境所先工程关掉打CMakeLists.txt文件更改面内容根据说步骤走遍CMake;编译器环境(VS2008)更改CMakeLists.txt文件直接F7编译工程选择者发现图(5)所示现象发
改变CMakeLists.txt内容工程环境要重新构建、设置所必须加载新工程环境设置点Yes,点Reload重新加载设置工程环境
另外经看某些童鞋问d图(6)所示界面要办能办界面提示已经灰清楚指定exe路径给点OK;现种情况原没exe执行文件工程设启工程图(6)所示发现ALL_BUILD工程名字黑体显示表示启工程;或者exe执行文件工程HelloCMake右击->设置启工程现图(6)所示界面
些比较琐碎东西介绍完我起看看CMakeLists.txt面代码表示意思争取每句代码都作解释定要告诉我
图(5)
图(6)
CMakeLists.txt内容再罗列:
1. cmake_minimum_required(VERSION 2.6)
2. project(HelloCmake)
3. add_executable(HelloCMake hellocmake.cpp)
第1行cmake_minimum_required(VERSION 2.6)CMake版本要求基本每CMakeLists.txt文件都句代码cmake_minimum_requiredcmake命令写写VERSION关键字必须写且能省略;2.6CMake版本号现版本2.8.3
第2行project(HelloCmake)projectCMake命令面参数HelloCMake要工程名字换句说***.sln或者***.dsw等工程项目文件名字
第3行add_executable(HelloCMake hellocmake.cpp)add_executable同CMake命令链接关源文件exe执行文件命令作用第参数exe文件文件名般与project工程名致编译文件别HelloCMake.slnHelloCMake.exeAdd_executable()面参数列表带要编译文件名间空格或车等隔加入:
add_executable(HelloCMake hellocmake.cpp hellocmake.h)
CMake用三命令介绍完别cmake_minimum_requiredprojectadd_executable等
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)