OpenCV配置,从来没有这么简单!

用CMAKE配置自己的OpenCV程序

---配置OpenCV从来没有这么简单!

    本文需要一定的CMAKE知识,推荐阅读中文的 CMake Practice.pdf ,至于Cmake是什么,我只能说他是跨平台的项目管理工具,具体请各位客官百度之.这里假设你已经看了pdf,有不懂得也请自翻书.

    昨天在网上得知,用Cmake写自己的opencv程序只需要使用一个CMakeLists.txt,配合万能的cmake命令就能生成万能的makefile文件,自动配置头文件包含,库包含,自动连接lib文件.

    详情见官方文档 Using OpenCV with gcc and CMake,不过官方文件是用gcc进行的,而我用的是VS2013,于是经过一上午的奋斗,解决了配置Windows平台的方法.概述如下:

    配置opencv只需一个CMakeLists.txt

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

    其中:

           cmake_minimum_required(VERSION 2.8)    指定了最小的CMAKE版本,也就是说必须用 2.8以上版本

            project( DisplayImage )  定义了一个工程(VS中的解决方案),叫 DisplayImage

            find_package( OpenCV REQUIRED )    关键的一句,找到opencv的配置,并自动配置

            add_executable( DisplayImage DisplayImage.cpp )    添加一个可执行文件,即VC中的项目,名字叫DisplayImage,使用的源文件是 DisplayImage.cpp

            target_link_libraries( DisplayImage ${OpenCV_LIBS} )    关键的第二句, 指定链接库,其中 OpenCV_LIBS 是关键的一句中生成的

    个人猜测:在linux和Mac等平台上需要用 make install 安装opencv,在opencv源文件目录下依次执行:

mkdir build
cd build
cmake ../
make
make install

    径过实验,证实:

        在Windows平台上需要添加环境变量CMAKE_PREFIX_PATH其内容为:

        你的OpenCV目录/build

        目的是让cmake找到

        OpenCVConfig.cmake

        OpenCVConfig-version.cmake

        两个文件,然后cmake会依照其确定正确的生成平台和方式,这样VS就可以像gcc等一样能用cmake构建工程文件啦!

*不添加CMAKE_PREFIX_PATH变量有时也能工作,只是有时不能,具体不清楚为什么

*当然,你要将cmake的bin目录包含到path这样你才能直接使用 cmake 命令

opencv的配置文件(OpenCVConfig.cmake)生成了一系列CMAKE量:

#      - OpenCV_LIBS                     : The list of libraries to links against.

#      - OpenCV_LIB_DIR                  : The directory(es) where lib files are. Calling LINK_DIRECTORIES

#                                          with this path is NOT needed.

#      - OpenCV_INCLUDE_DIRS             : The OpenCV include directories.

#      - OpenCV_COMPUTE_CAPABILITIES     : The version of compute capability

#      - OpenCV_ANDROID_NATIVE_API_LEVEL : Minimum required level of Android API

#      - OpenCV_VERSION                  : The version of this OpenCV build. Example: "2.4.0"

#      - OpenCV_VERSION_MAJOR            : Major version part of OpenCV_VERSION. Example: "2"

#      - OpenCV_VERSION_MINOR            : Minor version part of OpenCV_VERSION. Example: "4"

#      - OpenCV_VERSION_PATCH            : Patch version part of OpenCV_VERSION. Example: "0"

#

#    Advanced variables:

#      - OpenCV_SHARED

#      - OpenCV_CONFIG_PATH

#      - OpenCV_LIB_COMPONENTS

#

# ===================================================================================

#

#    Windows pack specific options:

#      - OpenCV_STATIC

#      - OpenCV_CUDA



你可能感兴趣的:(配置,opencv,cmake)