使用cmake来自己编译opencv



一、先下载cmake:

1. 登录CMake官网,下载CMake安装包。

使用cmake来自己编译opencv
  2. 双击下载的安装包,安装程序,会弹出如下界面,点击“Next”按钮,进入下一步

使用cmake来自己编译opencv
  3. 同意CMake的条款,点击“Next”按钮,进入到下一步


  4. 选中“Add CMake to the system PATH for the current user”,点击“Next”按钮。

使用cmake来自己编译opencv
  5. 修改安装目录。

使用cmake来自己编译opencv
  6. 点击“Install”,CMake开始安装,安装完成后,点击“Finish”按钮。


使用cmake来自己编译opencv



END


二、使用CMake生成VS2013的OpenCV解决方案

1. 直接在opencv的官网上下载opencv3.0,然后安装会生成一个opencv3.0的文件。

2.在OpenCV3.0目录下新建目录build,用于放置生成的解决方案和编译好的库。使用cmake来自己编译opencv

  3. 打开CMake,在Where is the source code后面的文本框选择OpenCV的源代码,Where to build the binaries选择第2步新建的文件夹build,如下图所示:

使用cmake来自己编译opencv

  4. 点击“Configure”按钮,在弹出的对话框中,选择“Visual Studio 12 Win64”,使用默认的本地编译器,如下图所示:(根据自己电脑里面的vs来选

使用cmake来自己编译opencv 

5. 点击“Finish”之后,等待配置完成,如下图所示:(如果电脑里面没有下载Cuda,则将勾选的Cuda选项设成否)

使用cmake来自己编译opencv

  6. 找到WITH_TBB,勾选:(该选项我这次编译时没有选择,不过也没有报错)

使用cmake来自己编译opencv 

7.再次点击“Configure”按钮,配置完成出现红色标记,修改TBB_INCLUDE_DIRS的Value为:C:\OpenCVLatest\tbb42_20140122oss_win\tbb42_20140122oss\include

使用cmake来自己编译opencv 

 8. 再次点击“Configure”按钮,会出现如下所示:

使用cmake来自己编译opencv

  9. 这个地方需要注意一下,因为生成的Value值到intel64,这里需要修改为intel64/vc12,对应vs2013,如下图所示:

使用cmake来自己编译opencv


10. 再次点击“Configure”按钮,这时就没有红色标记出现了,点击“Generate”按钮,生成OpenCV的解决方案。

END


三、VS2013编译OpenCV解决方案生成库

1.打开OpenCV的解决方案(在文件夹下面选择OpenCV.sln文件),右击CMakeTargets下的INSTALL,选择“生成”,生成Debug版的dll和lib,如下图所示:

使用cmake来自己编译opencv

使用cmake来自己编译opencv

  2. 修改配置为“Release”,重复步骤1,生成Release版的dll和lib,如下图所示:

使用cmake来自己编译opencv 

3. 生成完毕,在OpenCV解决方案下的install文件夹里就有了dll,lib和h头文件了。

使用cmake来自己编译opencv

  4. 虽然生成了库文件了,如果可以Debug跟踪源码,还得保留OpenCV解决方案。




在配置vs2013时,本人有遇到一点错误:
错误 1 error C1083: 无法打开包括文件: “unistd.h”: No such file or directory:
错误原因:没有继承vs2013中默认的库,可以在属性管理器->链接器->输入->附加依赖项,中勾选从父级或项目默认设置继承

使用cmake来自己编译opencv

错误2   找不到Python27-d.lib,
错误原因:Python中有一个头文件调用了Python调用库的Debug模式;
http://blog.****.net/I_can_do_1098/article/details/54312117 可以参照这个博客,将Pythonconfig.h进行修改;


最后,自己手动跟踪opencv的代码:
1.先新建一个项目,再将opencv里面的一个源代码打开

使用cmake来自己编译opencv

,其中里面的配置环境为:

使用cmake来自己编译opencv
再进行生成 ,调试成功即可。


end