在Windows下为OpenCV编译MinGW库

Rad*_*get 2 c++ windows opencv mingw makefile

我试图在Windows 7下为MINGW编译OpenCV 3.0静态库.为此,我:

  1. 下载并解压缩的OpenCV
  2. 下载并安装了MingW
  3. 下载并安装了CMake

我还将系统"Path"变量的路径添加到OpenCV,MinGW和CMake的"bin"目录中.

之后我:

  1. 跑cmake-gui

    4.1.配置源代码"opencv/sources"

    4.2.生成的makefile

到目前为止,一切似乎都没问题,Makefile已经存在于opencv/sources中.

现在我想用make编译:

c:\OpenCV_3_0\opencv\sources>i:\MinGW\msys\1.0\bin\make.exe
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
Run Code Online (Sandbox Code Playgroud)

什么也没发生.任何人都可以帮助我什么可能是错的?

使版本似乎没问题:i:\ OpenCV_3_0\opencv\sources> make -v GNU Make 3.81 Copyright(C)2006 Free Software Foundation,Inc.这是免费软件; 查看复制条件的来源.没有保修; 甚至不适用于适销性或特定用途的适用性.

This program built for i686-pc-msys
Run Code Online (Sandbox Code Playgroud)

g ++似乎还可以:

i:\OpenCV_3_0\opencv\sources>g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=i:/mingw/bin/../libexec/gcc/mingw32/4.8.1/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.8.1/configure --prefix=/mingw --host=mingw32 --build=m
ingw32 --without-pic --enable-shared --enable-static --with-gnu-ld --enable-lto
--enable-libssp --disable-multilib --enable-languages=c,c++,fortran,objc,obj-c++
,ada --disable-sjlj-exceptions --with-dwarf2 --disable-win32-registry --enable-l
ibstdcxx-debug --enable-version-specific-runtime-libs --with-gmp=/usr/src/pkg/gm
p-5.1.2-1-mingw32-src/bld --with-mpc=/usr/src/pkg/mpc-1.0.1-1-mingw32-src/bld --
with-mpfr= --with-system-zlib --with-gnu-as --enable-decimal-float=yes --enable-
libgomp --enable-threads --with-libiconv-prefix=/mingw32 --with-libintl-prefix=/
mingw --disable-bootstrap LDFLAGS=-s CFLAGS=-D_USE_32BIT_TIME_T
Thread model: win32
gcc version 4.8.1 (GCC)
Run Code Online (Sandbox Code Playgroud)

ber*_*rak 6

这里有3个相关的文件夹:

  • 树.保持不变(直到你完全知道你在做什么).不要建立那个,否则你永远不能正确清理.
  • 构建文件夹.所有cmake/make生成的临时文件都在这里.它可以在你的磁盘上的任何地方,你甚至可以在以后删除它(期望〜2GB临时文件)
  • 安装文件夹,这就是最终的库/ EXE /头/数据去

  1. 决定,你是否想要contrib_repo内容,evt.dl那个.
  2. 创建一个构建文件夹,cd进入它.
  3. 从那里开cmake/cmake-gui .如果您使用的是cmdline,那么最后一个arg应该是opencv源文件夹(CmakeLists.txt所在的位置)
  4. 冲洗并重复,直到你对cmake输出完全满意为止
  5. 运行:mingw32-make
  6. 如果没有错误运行:mingw32-make install

  • 使用mingw有点棘手,你必须在cmake-settings中明确指定你的编译器/ make工具
  • 如果添加contrib模块,则可能必须排除其中的一些(并非所有构建正确的atm.)
  • 静态库的-D BUILD_SHARED_LIBS = OFF
  • -D CMAKE_INSTALL_PREFIX = your_install_dir //请正确设置.

这是我最终使用的:(请不要盲目复制......)

cmake -G "MinGW Makefiles" -D CMAKE_CXX_COMPILER="D:\Programme\MinGW\bin\mingw32-g++.exe" -D CMAKE_MAKE_PROGRAM="D:\Programme\MinGW\bin\mingw32-make.exe" -D OPENCV_EXTRA_MODULES_PATH="../../opencv_contrib/modules" -D WITH_IPP=OFF -D WITH_OPENCL=OFF -D BUILD_TIFF=ON -D WITH_TIFF=ON -D BUILD_PNG=ON -D WITH_PNG=ON -D BUILD_ZLIB=ON -D WITH_JASPER=OFF -D WITH_OPENEXR=OFF -D BUILD_OPENEXR=OFF -D BUILD_SHARED_LIBS=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_opencv_apps=OFF -D BUILD_examples=OFF -D BUILD_opencv_datasets=OFF -D BUILD_opencv_line_descriptor=OFF  ..
mingw32-make
mingw32-make install
Run Code Online (Sandbox Code Playgroud)