在Windows下为OpenCV编译MinGW库

时间:2014-10-16 06:30:55

标签: c++ windows opencv makefile mingw

我正在尝试在Windows 7下为MINGW编译OpenCV 3.0静态库。为此,我:

  1. downloaded and unpacked OpenCV
  2. downloaded and installed MingW
  3. downloaded and installed CMake
  4. 我还将系统“Path”变量的路径添加到OpenCV,MinGW和CMake的“bin”目录中。

    之后我:

    1. 运行cmake-gui

      4.1。配置源代码“opencv / sources”

      4.2。生成的makefile

    2. 到目前为止,一切似乎都没问题,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.
      

      没有发生任何事情。任何人都可以帮助我会出现什么问题?

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

      This program built for i686-pc-msys
      

      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)
      

1 个答案:

答案 0 :(得分:6)

这里有3个相关文件夹:

  • 来源树。保持不变(直到你绝对知道你正在做什么)。不要建立那个,否则你永远无法正常清理。
  • 构建文件夹。所有cmake / make生成的临时文件都在这里。它可以在你的磁盘上的任何地方,你甚至可以在以后删除它(期望〜2gb临时文件)
  • 安装文件夹,即最终的libs / exe / headers / data所在的文件夹

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

    • 使用mingw有点棘手,你必须在cmake-settings中明确指定你的编译器/ make工具
    • 如果添加contrib模块,则可能必须排除其中的一些(并非所有构建正确的atm。)
    • -D BUILD_SHARED_LIBS = OFF for static libs
    • -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