@echo off
REM ============================================================
REM  build_v3.bat — 一键编译 wrapper_v3.dll
REM
REM  使用前提：
REM    1. 已经解压 Xhk_demo.zip 到某个目录（假设为 D:\xhk_sdk\）
REM    2. 安装有 Visual Studio 2010 或更高版本
REM    3. OpenCV 头文件在解压目录中（D:\xhk_sdk\Xhk_demo\Xhk_demo\OpenCV\include\）
REM ============================================================

REM ---- 修改这里：指向你的 SDK 解压目录 ----
set SDK_DIR=D:\xhk_sdk
REM ============================================================

set SDK_SRC=%SDK_DIR%\Xhk_demo\Xhk_demo
set OPENCV_INC=%SDK_SRC%\OpenCV\include
set OPENMESH_INC=%SDK_SRC%\OpenMesh\include
set EIGEN_INC=%SDK_SRC%\eigen-3.3.7

echo [build] SDK_SRC  = %SDK_SRC%
echo [build] OPENCV   = %OPENCV_INC%
echo [build] EIGEN    = %EIGEN_INC%

REM ---- 检查必要文件 ----
if not exist "%SDK_SRC%\TwoEyeApi\TwoEyeUserApi.h" (
    echo [ERROR] 找不到 SDK 头文件！请检查 SDK_DIR 路径
    pause
    exit /b 1
)

REM ---- 检测 Visual Studio ----
if defined VS140COMNTOOLS (
    call "%VS140COMNTOOLS%\vsvars32.bat"
    set CL_VER=VS2015
) else if defined VS120COMNTOOLS (
    call "%VS120COMNTOOLS%\vsvars32.bat"
    set CL_VER=VS2013
) else if defined VS100COMNTOOLS (
    call "%VS100COMNTOOLS%\vsvars32.bat"
    set CL_VER=VS2010
) else (
    echo [WARN] 未检测到标准 VS 环境，尝试用 cl.exe
    where cl.exe >nul 2>nul
    if errorlevel 1 (
        echo [ERROR] 找不到 cl.exe！请从"开始菜单→Visual Studio→开发人员命令提示符"运行本脚本
        pause
        exit /b 1
    )
)

echo [build] 使用 %CL_VER%

REM ---- 编译 ----
cl.exe /O2 /MD /LD ^
    /I"%SDK_SRC%" ^
    /I"%SDK_SRC%\TwoEyeApi" ^
    /I"%OPENCV_INC%" ^
    /I"%OPENCV_INC%\cv\include" ^
    /I"%OPENCV_INC%\cxcore\include" ^
    /I"%OPENCV_INC%\highgui\include" ^
    /I"%OPENMESH_INC%" ^
    /I"%EIGEN_INC%" ^
    wrapper_v3.cpp ^
    /Fewrapper_v3.dll ^
    /link /NODEFAULTLIB:msvcrt.lib

if errorlevel 1 (
    echo.
    echo [ERROR] 编译失败！常见的 3 个原因：
    echo   1. OPENCV_INC 路径不对（通常是找不到 cv.h / cxcore.h）
    echo   2. SDK_SRC 路径不对（找不到 TwoEyeUserApi.h）
    echo   3. 缺少 OpenMesh 头文件
    echo.
    echo [FIX] 修改本脚本顶部的 SDK_DIR 后重试
    pause
    exit /b 1
)

echo.
echo ✅ 编译成功！输出: wrapper_v3.dll
echo.
echo [NEXT] 把以下文件都放到同一个目录：
echo   - wrapper_v3.dll  （刚编译的）
echo   - ICDevice.dll    （从 SDK 复制）
echo   - TwoEyeApi.dll   （从 SDK 复制）
echo   - xhcv2011.dll    （从 SDK 复制）
echo   - 其他 DLL          （OpenNI2, OpenCV 等）
echo   - icdev_info\      （标定文件目录）
echo.
pause
