windows mingw32-make "no such file" 安装opencv时出错

windows mingw32-make "no such file" error when installing opencv

我一直在尝试使用 CMake 3.22.0-rc1 从源代码构建 OpenCV-4.5.1。当执行“mingw32-make”时,出现以下问题。我猜 CMakeList 出了点问题,但我不确定。我发现没有名为“thread.c.obj”的文件,所以我尝试用gcc编译thread.c,但出现了一些引用错误(我将post截图或copy/paste如有错误可在评论区指出)

这是错误的描述:

D:\Code\opencv\sources\build>mingw32-make
[  0%] Built target opencv_highgui_plugins
[  0%] Building C object 3rdparty/openjpeg/openjp2/CMakeFiles/libopenjp2.dir/thread.c.obj
process_begin: CreateProcess(C:\Users271\AppData\Local\Temp\make6172-1.bat, C:\Users271\AppData\Local\Temp\make6172-1.bat, ...) failed.
make (e=2): 系统找不到指定的文件。//which means there's no such file
mingw32-make[2]: *** [3rdparty\openjpeg\openjp2\CMakeFiles\libopenjp2.dir\build.make:76: 3rdparty/openjpeg/openjp2/CMakeFiles/libopenjp2.dir/thread.c.obj] Error 2
mingw32-make[1]: *** [CMakeFiles\Makefile2:1650: 3rdparty/openjpeg/openjp2/CMakeFiles/libopenjp2.dir/all] Error 2
mingw32-make: *** [Makefile:165: all] Error 2

第一次在本论坛提问,对提问的格式不熟悉,如有不妥之处请指出。谢谢!

您收到的错误来自 mingw32-make 试图 运行 .bat 文件,运行 不能是 CreateProcess(这是内部用于执行程序),因为它需要像 CMD /C 到 运行.

这样的东西

您可以尝试结合使用 CMake 标志 -GNinjaNinja 作为构建工具。这也快了很多。

另一种解决方案是在构建时提供所有第三方先决条件,这样 CMake 就不必构建 3rdparty 文件夹中的所有内容。

或者您可以从命令提示符切换到 MSYS2 shell。因为它的行为非常像 Linux/Unix 提示符,所以可能会立即构建更好的库(因为这完全避免了调用 .bat 文件)。