a
This commit is contained in:
Executable
+97
@@ -0,0 +1,97 @@
|
||||
#!/bin/bash
|
||||
# Build script for paper_recognizer.wasm
|
||||
# Prerequisites: emsdk must be installed (source emsdk_env.sh)
|
||||
|
||||
set -e
|
||||
|
||||
# 配置路径
|
||||
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
SRC_DIR="$PROJECT_DIR/src"
|
||||
OUT_DIR="$PROJECT_DIR/web"
|
||||
OPENCV_DIR="/home/ubuntu/opencv"
|
||||
OPENCV_BUILD="$OPENCV_DIR/build_mini_os"
|
||||
|
||||
# 可选:激活 emsdk
|
||||
if [ -z "$EMSDK" ]; then
|
||||
EMSDK_DIR="/home/ubuntu/emsdk"
|
||||
if [ -f "$EMSDK_DIR/emsdk_env.sh" ]; then
|
||||
source "$EMSDK_DIR/emsdk_env.sh"
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p "$OUT_DIR"
|
||||
|
||||
# 头文件路径
|
||||
INCLUDES=(
|
||||
"-I$SRC_DIR"
|
||||
"-I$OPENCV_DIR/include"
|
||||
"-I$OPENCV_DIR/modules/core/include"
|
||||
"-I$OPENCV_DIR/modules/imgproc/include"
|
||||
"-I$OPENCV_DIR/modules/imgcodecs/include"
|
||||
"-I$OPENCV_DIR/modules/flann/include"
|
||||
"-I$OPENCV_BUILD"
|
||||
)
|
||||
|
||||
# OpenCV 静态库
|
||||
LIBS=(
|
||||
"-L$OPENCV_BUILD/lib"
|
||||
"-lopencv_core"
|
||||
"-lopencv_imgproc"
|
||||
"-L$OPENCV_BUILD/3rdparty/lib"
|
||||
"-lzlib"
|
||||
"-lopencv_imgcodecs"
|
||||
)
|
||||
|
||||
# Emscripten 编译标志
|
||||
EMCC_FLAGS=(
|
||||
"-s WASM=1"
|
||||
"-s ALLOW_MEMORY_GROWTH=1"
|
||||
"-s TOTAL_MEMORY=64MB"
|
||||
"-s WASM_MEM_MAX=512MB"
|
||||
"-s MODULARIZE=1"
|
||||
"-s EXPORT_NAME=\"PaperRecognizerModule\""
|
||||
"-s EXPORTED_RUNTIME_METHODS=[\"ccall\",\"cwrap\",\"getValue\",\"setValue\",\"UTF8ToString\",\"stringToUTF8\",\"HEAPU8\",\"HEAP8\",\"HEAP32\"]"
|
||||
"-s EXPORTED_FUNCTIONS=[\"_malloc\",\"_free\",\"_recognize\",\"_getResultJson\",\"_getAnnotatedWidth\",\"_getAnnotatedHeight\",\"_getAnnotatedPixels\",\"_freeResult\"]"
|
||||
"-s FILESYSTEM=0"
|
||||
"-s DISABLE_EXCEPTION_CATCHING=1"
|
||||
"-Wno-unused-command-line-argument"
|
||||
)
|
||||
|
||||
# 优化级别
|
||||
OPT_FLAGS="-Os -DNDEBUG"
|
||||
|
||||
# 源文件
|
||||
SOURCES=(
|
||||
"$SRC_DIR/PaperRecognizer.cpp"
|
||||
"$SRC_DIR/ColorReader.cpp"
|
||||
"$SRC_DIR/PaperConfig.cpp"
|
||||
"$SRC_DIR/emsc_bridge.cpp"
|
||||
)
|
||||
|
||||
echo "========================================"
|
||||
echo "Building paper_recognizer WASM module..."
|
||||
echo "========================================"
|
||||
echo "Project: $PROJECT_DIR"
|
||||
echo "OpenCV: $OPENCV_BUILD"
|
||||
echo ""
|
||||
|
||||
# Emscripten 编译命令
|
||||
CMD="em++ \
|
||||
$OPT_FLAGS \
|
||||
${INCLUDES[@]} \
|
||||
${SOURCES[@]} \
|
||||
${LIBS[@]} \
|
||||
${EMCC_FLAGS[@]} \
|
||||
-o \"$OUT_DIR/paper_recognizer.js\""
|
||||
|
||||
echo "Running:"
|
||||
echo "$CMD"
|
||||
echo ""
|
||||
eval "$CMD"
|
||||
|
||||
echo ""
|
||||
echo "========================================"
|
||||
echo "Build complete!"
|
||||
echo "Output:"
|
||||
ls -lh "$OUT_DIR/"paper_recognizer.*
|
||||
echo "========================================"
|
||||
Reference in New Issue
Block a user