【问题标题】:Compiling MinGW libs for OpenCV under Windows在 Windows 下为 OpenCV 编译 MinGW 库
【发布时间】:2014-12-11 10:07:39
【问题描述】:

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

  1. downloaded and unpacked OpenCV
  2. downloaded and installed MingW
  3. downloaded and installed 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.

什么也没发生。谁能帮我出了什么问题?

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

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)

【问题讨论】:

标签: c++ windows opencv makefile mingw


【解决方案1】:

这里有 3 个相关文件夹:

  • 来源树。保持原状(直到你完全知道你在做什么)。不要内置到那个里面,否则你永远无法正确清理。
  • build 文件夹。所有 cmake / make 生成的临时文件都放在这里。它可以在您磁盘上的任何位置,您甚至可以稍后将其删除(预计 ~2gb 临时文件)
  • install 文件夹,这是最终的 libs/exe/headers/data 所在的位置

  1. 决定,是否需要 contrib_repo 内容,evt。那个。
  2. 创建一个构建文件夹,cd 进入它。
  3. 从那里运行 cmake/cmake-gui 。如果您使用的是命令行,最后一个参数应该是 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多