使用Emscripten&CMake编译OpenCV Core和ImgProc失败求助
编译OpenCV core/imgproc模块到WASM的问题(Windows 11 MINGW64环境)
问题场景
在Windows 11的MINGW64(bash)环境下,尝试用自定义emcmake命令仅编译OpenCV的core和imgproc模块,执行emmake ninja install时触发WASM废弃关键字报错。同时尝试官方build_js.py脚本编译也失败,推测是Windows环境问题,正切换到WSL,求可行的仅编译core+imgproc的步骤(排除官方预编译4.x版本OpenCV.js)。
所用编译命令
emcmake cmake -G Ninja -S statics/opencv -B statics/opencv/static_build -D BUILD_SHARED_LIBS=OFF -D CMAKE_C_COMPILER=emsdk/upstream/emscripten/emcc -D CMAKE_CXX_COMPILER=emsdk/upstream/emscripten/em++ -D CMAKE_MAKE_PROGRAM=C:/ninja-win/ninja.exe -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=statics/opencv/static_build/install -D BUILD_SHARED_LIBS=OFF -D BUILD_opencv_gapi=OFF -D WITH_IPP=OFF -D BUILD_opencv_dnn=OFF -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_DOCS=OFF -D WITH_1394=OFF -D WITH_CUDA=OFF -D WITH_FFMPEG=OFF -D WITH_GSTREAMER=OFF -D WITH_GTK=OFF -D WITH_JPEG=OFF -D WITH_PNG=OFF -D WITH_TIFF=OFF -D WITH_WEBP=OFF -D WITH_OPENCL=OFF -D WITH_OPENGL=OFF -D WITH_QT=OFF -D WITH_VTK=OFF -D WITH_LAPACK=OFF -D BUILD_opencv_videoio=OFF -D BUILD_opencv_highgui=OFF -D BUILD_opencv_ml=OFF -D BUILD_opencv_photo=OFF -D BUILD_opencv_video=OFF -D BUILD_opencv_calib3d=OFF -D BUILD_opencv_features2d=OFF -D BUILD_opencv_flann=OFF -D BUILD_opencv_objdetect=OFF -D WITH_ITT=OFF -D WITH_JPEG2000=OFF -D ENABLE_PIC=OFF -D WITH_ZLIB=ON
报错信息
opencv/modules/core/include\opencv2/core/hal/intrin_wasm.hpp:2088:18: warning: 'wasm_v8x16_shuffle' is deprecated: use 'wasm_i8x16_shuffle' instead [-W#pragma-messages] 2088 | v128_t t10 = wasm_v8x16_shuffle(t00, t01, 0,1,2,3,12,13,14,15,24,25,26,27,4,5,6,7); | ^ opencv/modules/core/include\opencv2/core/hal/intrin_wasm.hpp:2728:22: warning: 'wasm_v8x16_shuffle' is deprecated: use 'wasm_i8x16_shuffle' instead [-W#pragma-messages] 2728 | return v_int16x8(wasm_v8x16_shuffle(vec.val, vec.val, 0,1,2,3,5,8,9,10,11,12,13,14,15,6,7)); | ^ emsdk\upstream\lib\clang\20\include\wasm_simd128.h:1746:3: note: expanded from macro 'wasm_v8x16_shuffle' 1746 | __DEPRECATED_WASM_MACRO("wasm_v8x16_shuffle", "wasm_i8x16_shuffle") | ^ emsdk\upstream\lib\clang\20\include\wasm_simd128.h:1687:3: note: expanded from macro '__DEPRECATED_WASM_MACRO' 1687 | _Pragma(__WASM_STR(GCC warning( | ^ :3:6: note: expanded from here 3 | GCC warning( "'" "wasm_v8x16_shuffle" "' is deprecated: use '" "wasm_i8x16_shuffle" "' instead") | more warnings (186) errors (9).
已尝试的操作
- 未采用手动替换废弃关键字的方案
- 尝试使用
opencv/platforms/js/build_js.py脚本编译OpenCV.js,因脚本自动附加的-G Ninja标志报错,修改脚本兼容后仍失败,推测是Windows系统环境导致
求助需求
求能成功仅编译OpenCV core和imgproc模块的步骤,排除官方预编译的4.x版本OpenCV.js。
内容的提问来源于stack exchange,提问作者Nathan Potter
相关产品推荐
相关产品推荐

