CMake编译opencv4.1.0静态库(Windows10)

CMake在windows10上编译opencv4.1.0静态库:

1、安装CMake(最新版本即可,百度安装)

2、下载opencv4.1.0(官网下载)

3、打开cmake的图形化界面程序(下图红框所示)

CMake编译opencv4.1.0静态库(Windows10)_第1张图片

4、在opencv4.1.0的sources的同级目录下新建文件夹build_str(文件名自己起)

5、在cmake的图形界面中添加需要编译的源码路径和编译生成的文件的路径,如下图所示:

CMake编译opencv4.1.0静态库(Windows10)_第2张图片

6、勾选完成后点击Configure,选择编译的库所运行的平台(本人的为vs2015的x64)。点击Finish

CMake编译opencv4.1.0静态库(Windows10)_第3张图片

7、在CMake中勾选要编译的值(需要哪些库勾选哪些。由于本人需要编译静态库即.lib文件,所以没有勾选BUILD_SHARED_LIBS。也不需要opencv的java和python库,所以这些都不需要勾选)

出现Configuring done代表配置完成(该过程中需要网速良好,因为会可能下载依赖的其他库)

备注:编译静态库时需要将第三方库也全部编译为静态库(即3rdparty文件夹中的内容)

CMake编译opencv4.1.0静态库(Windows10)_第4张图片

CMake编译opencv4.1.0静态库(Windows10)_第5张图片

CMake编译opencv4.1.0静态库(Windows10)_第6张图片

8、点击Generate,完成会在Configuring done下面显示Generate done!

Generate完成之后在新建的build_sta目录中会生成OpenCV.sln

CMake编译opencv4.1.0静态库(Windows10)_第7张图片

9、选中OpenCV.sln,右击打开方式选择vs2015,打开之后点击生成->批生成,勾选ALL_BUILD和INSTALL选项,点击生成。(如图所示)

CMake编译opencv4.1.0静态库(Windows10)_第8张图片

CMake编译opencv4.1.0静态库(Windows10)_第9张图片

10、编译完OpenCV之后,在新建的build_sta中会生成install目录,install目录下会生成所需的静态库(在x64中)和头文件(在include中)。

CMake编译opencv4.1.0静态库(Windows10)_第10张图片

至此,利用cmake生成opencv4.1.0的静态库!!!(opencv4.1.0解压生成的opencv_world410.lib只是函数声明等,并没有具体实现方法,所以在将opencv4.1.0的静态库打包到项目的动态库中时需要利用源码重新编译opencv4.1.0的静态库!!)

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;
}

配置opencv的项目时应注意(具体配置如下所示):

(1)VC++目录中的包含目录应该设置为新建的build_sta的install中的include;

(2)库目录应该设置为新建的build_sta的install中的x64;

(3)在C/C++的代码生成中应该设置运行库为多线程(/MT),默认的不是(/MT)代表加载opencv的动态库运行该项目,该属性中的d代表debug模式。

CMake编译opencv4.1.0静态库(Windows10)_第11张图片

CMake编译opencv4.1.0静态库(Windows10)_第12张图片

CMake编译opencv4.1.0静态库(Windows10)_第13张图片

在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(调用静态库可能发生的错误)

你可能感兴趣的:(CMake编译opencv4.1.0静态库(Windows10))