Files
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

98 lines
2.3 KiB
Bash
Executable File

#!/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 "========================================"