1. 错误描述
[ 65% ] Building RC object modules/world/CMakeFiles/opencv_world.dir/vs_version.rc.obj
gcc: error: long: No such file or directory
C:\Mingw-w64\mingw32\bin\windres.exe: preprocessing failed.
mingw32-make[2]: *** [modules\world\CMakeFiles\opencv_world.dir\build.make:11240: modules/world/CMakeFiles/opencv_world.dir/vs_version.rc.obj] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:4789: modules/world/CMakeFiles/opencv_world.dir/all] Error 2
mingw32-make: *** [Makefile:179: all] Error 2
2. 分析
打开modules\world\CMakeFiles\opencv_world.dir\build.make的第11240行发现如下内容,可发现错误原因是未成功生成vs_version.rc.obj。
modules/world/CMakeFiles/opencv_world.dir/vs_version.rc.obj: modules/world/CMakeFiles/opencv_world.dir/flags.make
modules/world/CMakeFiles/opencv_world.dir/vs_version.rc.obj: modules/world/vs_version.rc@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=D:\opencv\bulid_mingw\CMakeFiles --progress-num=$(CMAKE_PROGRESS_801) "Building RC object modules/world/CMakeFiles/opencv_world.dir/vs_version.rc.obj"cd /d D:\opencv\bulid_mingw\modules\world && C:\Mingw-w64\mingw32\bin\windres.exe -O coff $(RC_DEFINES) $(RC_INCLUDES) $(RC_FLAGS) D:\opencv\bulid_mingw\modules\world\vs_version.rc CMakeFiles\opencv_world.dir\vs_version.rc.obj
3. 解决方法
根据build.make中的错误行,自己修改编译命令,手动生成vs_version.rc.obj,并重新mingw32-make。
cd /d D:\opencv\bulid_mingw\modules\world
C:\Mingw-w64\mingw32\bin\windres.exe D:\opencv\bulid_mingw\modules\world\vs_version.rc -O coff CMakeFiles\opencv_world.dir\vs_version.rc.obj