【问题标题】:C:\Users\' is not recognized as an internal or external command compiling opencv for QTC:\Users\' 未被识别为为 QT 编译 opencv 的内部或外部命令
【发布时间】:2013-05-15 19:27:33
【问题描述】:

我想为 QT 编译 opencv。我用这个教程

http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml

在第 8 步中出现此错误:

C:\opencv_bin1>mingw32-make 
[  0%] Building C object 3rdparty/zlib/CMakeFiles/zlib.dir/adler32.c.obj 
'C:\Users\' is not recognized as an internal or external command,   
  operable program or batch file. 
 3rdparty\zlib\CMakeFiles\zlib.dir\build.make:53: recipe for target
 '3rdparty/zlib/CMakeFiles/zlib.dir/adler32.c.obj' failed                                     mingw32-make[2]: *** [3rdparty/zlib/CMakeFiles/zlib.dir/adler32.c.obj] Error 1  CMakeFiles\Makefile2:269: recipe for target '3rdparty/zlib/CMakeFiles/zlib.dir/all' failed                                                                      mingw32-make[1]: *** [3rdparty/zlib/CMakeFiles/zlib.dir/all] Error 2            makefile:112: recipe for target 'all' failed                                    mingw32-make: *** [all] Error 2    

我认为它来自路径变量,但我没有看到其中的错误。 有什么想法吗?

EDIT

当我使用 make 而不是 mingw32-make 时:

path variables:

用户变量:

C:\opencv\build\x64\vc10\bin\;C:\opencv\build\common\tbb\intel64\vc10\;C:\ffmpeg\bin;C:\op    
ncv\build\x64\vc10\bin\;c:\Program Files\Microsoft Visual Studio    
10.0\Common7\Tools\;C:\jom\jom.exe\;C:\Windows\System32\;C:\Program Files (x86)\CMake  
2.6\bin\;C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin\;C:\Qt\Qt5.0.1\Tools\MinGW\bin\;

系统变量:

    C:\Borland\Delphi7\Bin;C:\Borland\Delphi7\Projects\Bpl\;C:\Inprise\vbroker\bin;C:\Qt\Qt5.0.
1\5.0.1\mingw47_32\bin;C:\Qt\Qt5.0.1\Tools\MinGW\bin;C:\Program Files (x86)\CMake 
2.8\bin\;C:\Windows\System32\;

我下载 msys 并将它的 bin 文件夹添加到路径中。现在,当我进入 opencv 目录并输入 make 时,它​​写道:

C:\opencv_Bin>make   
 Microsoft Windows [Version 6.2.9200]  
(c) 2012 Microsoft Corporation. All rights reserved. 

【问题讨论】:

    标签: windows qt opencv cmake


    【解决方案1】:

    请改用make(即来自 MSYS 发行版的那个),并且以后避免使用mingw32-make(来自 MinGW 发行版)以避免路径问题。事实上,mingw32-make 还存在一些其他缺陷,包括缺少功能,您绝对不想处理这些问题。摘自 MinGW Wiki:

    ma​​ke 和 mingw32-make 有什么区别?

    make 的“本机”(即:依赖于 MSVCRT)端口缺少某些功能,并且由于 Win32 上缺少 POSIX 而修改了功能。 MSYS 发行版中还存在一个依赖于 MSYS 运行时的 make 版本。该端口的操作更多地与 make 的预期操作相同,并且在执行期间减少了令人头疼的问题。基于此,MinGW 开发人员/维护人员/打包人员决定最好重命名本机版本,以便“本机”版本和 MSYS 版本可以同时存在而不会发生文件名冲突。

    因此,您想要的是让 CMake 使用 MSYS Makefiles 生成器,而不是 MinGW Makefiles

    更新


    您的PATH 环境变量中有一些错误的make。看看:Inprise Corp.,那是什么!@#$?不管是什么,绝对不是 MSYS make。清理你的 PATH 并确保你有 MSYS make 在里面。通过运行make --version 进行检查,您应该会看到以下内容:

    GNU Make 3.82.90
    Built for i686-pc-msys
    Copyright (C) 2010  Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    

    【讨论】:

    • 我不能告诉你。没有人比你更了解你的环境。你必须自己找到它。你真的让我吃惊,来吧,你不可能这么糟糕......你不知道如何在你的电脑上使用搜索make.exe 文件吗?作为替代方案,您可以打开 MSYS Bash 并输入 which make.exe
    • make.exe只存在于borland delphi和qt文件夹中的nmake
    • 那么显然是来自 Borland Delphi 的 make.exe,应该从 PATH 中删除。
    • 我删除了它,现在当我输入 make 时,它​​写道:'make' 不是内部或外部命令、可运行程序或批处理文件。
    • 不,这就是您所需要的,只需获取 MSYS。我鼓励你做的一件事是了解 MSYS 和 MinGW 实际上是什么,你为什么需要它们,以及 Make 是什么!一定要这样做,因为您似乎对所有这些东西都非常陌生,如果您现在不掌握这些基础知识,将会变得更加困难。
    猜你喜欢
    • 2015-10-18
    • 2012-10-20
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 2013-10-11
    • 2013-01-25
    • 2016-10-01
    相关资源
    最近更新 更多