这几篇文章将带你编译出一个较为完整的OpenCV库,后续还会带你集成如Eigen、CUDA等模块。
期间本人遇到国内网络导致的错误、CMakeLists的BUG、甚至编译工具的BUG。
我们先从最不容易出错地方的开始。
你需要知道
OpenCV虽然会在的提供安装程序中给你一个事先编译好的二进制代码(库),但是这基本上就是一个残血版的OpenCV,所以我们需要对它重新编译来加入一些新的特性,尝试添加令人exciting的contrib模块和TBB支持。
何为CMake
CMake是一个自动化搭建Build流程的系统,通过发布者预先编辑好针对CMake的配置文件,开发者可以通过CMake便捷地来调整需要Build的内容。CMake会在配置过程中自动按需调整源码依赖关系等细节。
CMake的配置文件取名为CMakeLists.txt,OpenCV的源代码路径下有一个看起来很复杂的CMakeLists.txt。CMake解析这个文件后可以让你直观地配置OpenCV包含哪些模块,集成哪些库(比如附加的contrib模块、Eigen、CUDA、TBB等),启用什么技术特性(AVX、AVX2、SSSE3等)等等,同时也能较为方便地添加这些组件的文件路径,之后由CMake生成一个用于编译的工程文件,比如我使用VS2015,那CMake就生成一个VS的工程文件,打开后即可编译出想要的东西。
何为TBB
Threading Building Blocks (TBB) is a C++ template library developed by Intel for parallel programming on multi-core proces