CMake在windows10上编译opencv4.1.0静态库:
1、安装CMake(最新版本即可,百度安装)
2、下载opencv4.1.0(官网下载)
3、打开cmake的图形化界面程序(下图红框所示)
4、在opencv4.1.0的sources的同级目录下新建文件夹build_str(文件名自己起)
5、在cmake的图形界面中添加需要编译的源码路径和编译生成的文件的路径,如下图所示:
6、勾选完成后点击Configure,选择编译的库所运行的平台(本人的为vs2015的x64)。点击Finish
7、在CMake中勾选要编译的值(需要哪些库勾选哪些。由于本人需要编译静态库即.lib文件,所以没有勾选BUILD_SHARED_LIBS。也不需要opencv的java和python库,所以这些都不需要勾选)
出现Configuring done代表配置完成(该过程中需要网速良好,因为会可能下载依赖的其他库)
备注:编译静态库时需要将第三方库也全部编译为静态库(即3rdparty文件夹中的内容)
8、点击Generate,完成会在Configuring done下面显示Generate done!
Generate完成之后在新建的build_sta目录中会生成OpenCV.sln
9、选中OpenCV.sln,右击打开方式选择vs2015,打开之后点击生成->批生成,勾选ALL_BUILD和INSTALL选项,点击生成。(如图所示)
10、编译完OpenCV之后,在新建的build_sta中会生成install目录,install目录下会生成所需的静态库(在x64中)和头文件(在include中)。
11、测试生成的静态库是否能够运行
在vs2015中新建项目如下:
#include
#include
#include
using namespace cv;
int main()
{
Mat frame=imread("F:\\error.jpg");
cvtColor(frame,frame,CV_RGB2GRAY); //转为灰度图
imshow("aa", frame);
waitKey(0);
return 0;
}
(1)VC++目录中的包含目录应该设置为新建的build_sta的install中的include;
(2)库目录应该设置为新建的build_sta的install中的x64;
(3)在C/C++的代码生成中应该设置运行库为多线程(/MT),默认的不是(/MT)代表加载opencv的动态库运行该项目,该属性中的d代表debug模式。
在vs中配置为release的x64程序只需要加载opencv的静态库进行运行时应该将项目的属性->配置属性->C/C++->代码生成设置为多线程(/MT),否则会报以下错误:
LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”
参考文章:
https://blog.csdn.net/qq_41180014/article/details/91467890(CMake在win10编译生成opencv静态库)
https://blog.csdn.net/woainishifu/article/details/77487837(调用生成的opencv4.1.0的静态库)
https://blog.csdn.net/cc_946079647/article/details/38779173(调用静态库可能发生的错误)