准备:MinGW-w64(记得设置环境变量)、vscode(C/C++插件)、CMake、OpenCV源码
CMake与编译
打开CMake
- 指定源码目录(记为srcDir)
- 指定编译目录(记为buildDir)
- 点击
Configure
配置,注:”Specify the generator for this project”选”MinGW Makefiles” - 配置中间的列表,根据资料,勾选BUILD_opencv_world,WITH_OPENGL和BUILD_EXAMPLES,不勾选WITH_IPP、WITH_MSMF和ENABLE_PRECOMPILED_HEADERS(如果有的话),CPU_DISPATCH选空。
- 检查输出是否有误,无误点击
generate
生成。 - 进入buildDir,打开cmd,用
MinGW32-make
进行编译,可指定-j N
多线程编译 - 编译完成,
MinGW32-make install
安装 - 添加路径
buildDir/bin
到环境变量
注:编译后,buildDir\\install\\x64\\mingw\\bin
下的dll被自动转移到buildDir/bin
下,所以这里只引用了一个。opencv的头文件在buildDir\\install\\include
下,这里不添加到环境变量中。
配置VScode
打开VScode,按ctrl+shift+p
打开C/C++: Edit Configurations (JSON)
,配置c_cpp_properties.json
。此json指定includePath是给VScode看的,让其实现代码高亮。
1 | { |
**配置launch.jspn
**。注意下面的preLaunchTask
要与后面tasks.json
中的label
一致,才会正确启动;program
的地址要与后面tasks.json
中的args --> -o
中的地址一致,因为这一项指定了程序生成的地址,若地址不一样,会找不到。此json主要是指定了程序生成的地址和preLaunchTask,也是给VScode看的。
1 | { |
**配置tasks.json
**。这里指定用的是C:\\mingw64\\bin\\g++.exe
作为编译器,args
中还指定了输出文件地址、头文件地址(-I
)、动态库文件地址(-L
)、以及动态库。此json指定的编译的必须条件(头文件、库等),是给编译器看的。
注意:若在CMake中勾选了BUILD_opencv_world
,那么其实只会生成一个动态库,不需要像这里一样引用那么多个库。并且库的表达方式比较特殊,在buildDir\\install\\x64\\mingw\\bin
中,库的文件名称是libopencv_core451.dll
之类的以lib
开头的.dll
文件,但是在指定时,需要指定为-lopencv_core451
,即去掉lib & .dll
,同时以-l
开头(无空格)。
1 | { |
如果没有为buildDir\\bin
设环境变量,那么执行时还需要把库文件复制一份到程序同级目录下,即dbg目录下(与-o
指定目录同级)。所以放到其他电脑上运行时记得复制bin下的动态链接库。
测试
创建一个cpp文件,测试一下运行即可。
1 |
|