[OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试

  • 列表内容

一、OpenCv3.1.0配置

  • 点击查看动态编译博客

二、CMake3.6.1安装

  • 点击查看动态编译博客

三、使用CMake3.6.1编译OpenCv3.1.0

  1. 开启CMake

    开启CMake,如图 1

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第1张图片

  2. 选择 source文件地址编译生成的文件存放地址

    source文件地址选择OpenCv解压文件中的source文件,打开source文件,我们可以看到里面的文件如图 2,其中CMakeList.txt文件就是指导CMake编译的描述文件,想看懂改描述文件的同学可以看看CMake入门:

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第2张图片


    编译生成的文件地址选择了与source上一级同级的文件夹 buildS,该文件夹不存在,但是CMake会帮你创建,选择好了后如图 3:

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第3张图片

  3. Configure

    点击图 7左下角Configure按钮,软件会自动检测到电脑安装有VS2015(注意一定要选对版本),就帮你选定将该Source文件编译成VS2015项目,如图 4;

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第4张图片

    我们需要点finish按钮进行确认,确认之后得到的结果如图 5:

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第5张图片

    此时 buildS 文件夹中已经有生成的文件了,如图 6

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第6张图片

  4. 个性化设置

    在图 6中,我们勾选一些我们需要的设置,设置后的结果如图 7 和 图 8 所示(这里说明一下 比如 BUILD_EXAMPLE 我们不知道什么意思,可以将鼠标移动到该属性上面停留一会,就可以看到相应的解释了);

    BUILD_EXAMPLE checked
    BUILD_opencv_world checked
    BUILD_SHARED_LIBS not checked

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第7张图片

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第8张图片

  5. 生成

    在生成之前,我们需要在次点击Configure按钮,使得我们刚刚的设置得以生效,在这一步需要连接外网下载一个ippicv_win的压缩包,如果在这一步出现问题,可以上网搜索下载这个文件,放到相应的文件夹中
    然后我们点击Generate按钮,开始生成VS项目,生成结束之后,我们可以看到buildS 文件夹中的内容如图 9所示,和图 6对比,多了很多VS工程中出现的文件:

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第9张图片

  6. 在VS2015中生成dll和lib文件

    在VS2015中打开图 9中的 OpenCv.sln,点击生成-->批生成,如图 10选择:

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第10张图片

    点击Generate按钮,开始生成,生成过程如图 11,等待时间根据电脑配置,30--60min不等:

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第11张图片

四、使用自己静态编译好的OpenCv lib,发布可以脱离OpenCv环境运行的exe文件

  • 删除环境变量
    由于我们需要发布可以脱离OpenCv 和 VS 2015环境的exe 可执行文件,为了证明我们编译产生的exe是可以独立运行的,我们要把之前配置的有关OpenCv的环境变量删除;

  • Vs 2015中创建一个空的 Win32控制台程序
    在这个程序中,在源文件中添加一个drawing.cpp,可以在
    DOWNLOAD|drawing.cpp中下载;

  • 在属性管理器中设置Release属性
    在Release|64X 中设置新建一个props文件,(名为openCv310Rel64)(名字自己取,但是最好能够把其对应的信息展示在名称当中),这样的好处是在之后创建其它的OpenCv工程之后,直接将这个props文件导入到根目录,并添加到工程中就可以配置好OpenCv的库了;如图 12 (这里由于我们只是创建了这个props文件,但是没有对其中的属性进行设置,所以这里程序中会报错)

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第12张图片

  • 对自己创建的props文件进行配置相应的属性
    a.
    C/C++–> 常规 –> 附加包目录,添加如下图 13目录,根据自己的路径相应改一下:

    C:\OpenCv\buildS\install\include
    C:\OpenCv\buildS\install\include\opencv
    C:\OpenCv\buildS\install\include\opencv2

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第13张图片

    b.
    C/C++–> 代码生成 –> 运行库,设置为 多线程(/MT)
    说明 多线程(/MT)的意义:

  • 使得程序其连接的是libcmt.lib,该文件属于C语言运行时库,整个lib都会连接到PE文件当中;

  • 把对应的运行时库直接放到编译出来的exe文件当中,是的该程序可以在没有对应环境的电脑上运行;

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第14张图片

    c.
    链接器 –> 常规 –> 附件库目录,设置的目录入下:

    C:\OpenCv\buildS\install\x64\vc14\staticlib

    这一设置的意义在于,告诉VS编译时,需要加入到exe文件中的lib应当去哪里找,设置如图
    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第15张图片


    d.
    链接器 –> 输入 –> 附加依赖项,添加如下lib

    IlmImf.lib
    ippicvmt.lib
    libjasper.lib
    libjpeg.lib
    libpng.lib
    libtiff.lib
    libwebp.lib
    opencv_ts310.lib
    opencv_world310.lib
    zlib.lib

    如图
    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第16张图片

    e.
    调试生成exe文件,如果有生成的exe文件在其它没有设置OpenCv环境和VS环境的电脑上运行,那么就代表静态编译设置成功。点击下载编译好的exe文件

    [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 静态编译OpenCv3.1.0并测试_第17张图片


备注

  • 如有错误,欢迎指正
  • 如需交流,请私信新浪微博@IT技术N

你可能感兴趣的:(opencv)