Windows下利用CMake和VS编译OpenCV

Windows下利用CMake和VS编译OpenCV

 

1.   CMake简介

     CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是CMake 和 SCons 等其他类似系统的区别之处。

2.   使用CMake编译的优点

     获取OpenCV有两种途径,一是预编译好的库,二是下载源代码自己编译。OpenCV官网http://opencv.org/ 提供下载的OpenCV 既包含编译好的库,也包含源代码。通过OpenCV官网右上角的彩带,可以获取托管在GitHub上的OpenCV最新源代码。先来说一下自己编译的好处。

  1. 由于获取的是最新源代码,所以可以在OpenCV发布某个版本之前利用集成进来的高级功能;
  2. 自己编译可以在程序调试时跟踪源码;
  3. 预编译的库不包含一些功能,比如TBB,如果想使用这些功能只能自己动手了。

    此外,如果选用预编译好的库,当我们有时想查OpenCV自带的函数的源代码,比如函数cvCreateImage,,此时我们选中cvCreateImage, 点击鼠标右键->转到定义,我们会很惊讶的发现为什么只看到了cvCreateImage的一个简单声明,而没有源代码呢?这是因为openCV将很多函数被加入了函数库,并被编译成了dll,所以只能看到函数申明,没法看到源代码。而使用CMake编译OpenCV可以方便查看opencv的源代码。

3.   利用cmake编译opencv的源代码     

(1)登陆CMake官网http://www.cmake.org/download/下载

(2)打开CMake图形化界面cmake-gui.exe


(3)  点击“Where is the sourcecode”后面的那个“Browse Source...”按钮,选择OpenCV目录下sources文件夹的安装路径;例如,笔者的Opencv2.4.10的安装路径为F:\ProgramFile\OpenCV_2.4.10\sources;


(4)  点击“Where to build thebinaries”后面的那个“Browse Build...”按钮,选择CMake生成的工程文件所在的路径;例如,笔者选择的路径为:F:\ProgramFile\OpenCV_2.4.10\project

如下图所示:



(5)点击左下方的“Configure”按钮,选择编译平台,如笔者的机器上安装的是VS2008,因此,就选择Visual Studio 10 2010。如下图所示


(6) 点击“Finsh”按钮,出现如下画面:


(7) 再次点击“Config”按钮,结果如下所示:


(8) 点击“Generate”按钮,结果如下:


(9)  至此,就生成了你所需要的Visual Studio工程文件了;例如,笔者选择的工程文件所在的路径F:\ProgramFile\OpenCV_2.4.10\project就是如下的样子:

看到了opencv.sln工程了,用vs打开它,需要相应的函数的源码,在里面搜索查看就可以了。


    总结为: 用CMake导出opencv 源码,生成VC++项目,然后用vs打开工程,去里面搜索整个工程。

4.   编译中出现的问题

    在编译中第1步骤选择生成工程的目录过程中,如果没有选择在OpenCV的安装目录下(如笔者选择的目录F:\ProgramFile\OpenCV_2.4.10\project),而是在其他目录中,就会在编译过程中报错:

    Error in configuration process, project file may be invalid.

 

提示信息:

    CMakeError at CMakeLists.txt:70 (message): CMake fails to determine the bitness oftarget platform. Please check your CMake and compiler installation. If you arecross compiling then ensure that your CMake toolchain file correctly sets thecompiler details.

    CMakeLists.txt报错,CMake不能确定目标平台的位元。请检查CMake和编译器的安装,如果你是交叉编译,请确保CMake toolchain 文件的编译细节设置正确。

    原因可能是缺失正确的CMakeLists.txt文件,解决办法是将工程生成目录设置到OpenCV安装目录下。

5.   参考资料


  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值