[CMakeList][转载]利用CmakeList构建opencv程序

[CMakeList][转载]利用CmakeList构建opencv程序,第1张

打开VS2019创建CMake项目

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等


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7839292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存