From 021e0d2ce2a38083a0fc5bd3da3fe2f49a928f6c Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Thu, 2 Feb 2023 17:56:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=BC=96=E8=AF=91=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E3=80=82=EF=BC=88build=5Fall.bat=20OEM=20ARCH?= =?UTF-8?q?=EF=BC=89=E5=8D=B3=E5=8F=AF=E7=BC=96=E8=AF=91=E6=8C=87=E5=AE=9A?= =?UTF-8?q?OEM=E6=8C=87=E5=AE=9ACPU=E6=9E=B6=E6=9E=84=E7=9A=84=E6=89=80?= =?UTF-8?q?=E6=9C=89=E7=BB=84=E4=BB=B6=E3=80=82=EF=BC=88build=5Fall.bat=20?= =?UTF-8?q?all=EF=BC=89=E7=BC=96=E8=AF=91=E6=89=80=E6=9C=89OEM=E6=89=80?= =?UTF-8?q?=E6=9C=89=E5=B9=B3=E5=8F=B0=E6=9E=B6=E6=9E=84=E7=9A=84=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E3=80=82build=5Fbase.bat=E7=94=A8=E4=BA=8E=E7=BC=96?= =?UTF-8?q?=E8=AF=91lang/scanner/sane=E4=B8=89=E4=B8=AA=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=EF=BC=9Bbuild=5Fds.bat=E5=8F=AA=E7=94=A8=E4=BA=8E=E7=BC=96?= =?UTF-8?q?=E8=AF=91TWAIN=E6=95=B0=E6=8D=AE=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.bat | 94 --------------- build_all.bat | 234 +++++++++++++++++++++++++------------- build_all_2.bat | 57 ---------- build_base.bat | 107 +++++++++++++++++ build_ds.bat | 115 +++++++++++++++++++ device/scanner.vcxproj | 62 ++++------ lang/lang.vcxproj | 62 +++------- sane/sane.vcxproj | 59 ++++------ sln/Release/hgsetver.exe | Bin 97792 -> 84992 bytes sln/hgsetver/hgsetver.cpp | 83 +++++++------- twain/twain.vcxproj | 42 ++----- 11 files changed, 490 insertions(+), 425 deletions(-) delete mode 100644 build.bat delete mode 100644 build_all_2.bat create mode 100644 build_base.bat create mode 100644 build_ds.bat diff --git a/build.bat b/build.bat deleted file mode 100644 index 0cc7298..0000000 --- a/build.bat +++ /dev/null @@ -1,94 +0,0 @@ -@echo off -echo "Parameter 1:hg | lsc| hw | zj | cts" -echo "Parameter 2:x86 | x64 " -echo "Parameter 3:0x100 | 0x... " -echo "Parameter 4:0 | 1 , is 1 var++ ,is 0 var unchanged " -echo "Parameter 5:onlytwain | all ,is onlytwain build twain ,is all ,build scanner.dll sane.dll and twain..." -set OEM=%1 -set CPU=%2 -set PID=%3 -set NOV=%4 -set ISTWAIN=%5 -set COMPILE_RANGE="none" -set NOT_INCREASE_VER="" - -rem ----------------------------------------------------------------------------------------------------------------------------------- - -if "%OEM%" equ "hg" goto oem -if "%OEM%" equ "hw" goto oem -if "%OEM%" equ "lsc" goto oem -if "%OEM%" equ "zj" goto oem -if "%OEM%" equ "cts" goto oem -echo "Parameter 1:oem is fail" -exit 1 -:oem -echo %OEM% -rem ----------------------------------------------------------------------------------------------------------------------------------- - -if "%CPU%" equ "x64" goto sys -if "%CPU%" equ "x86" goto sys -echo "Parameter 2:sys is fail" -exit 1 -:sys -echo %CPU% -rem ----------------------------------------------------------------------------------------------------------------------------------- - -if "%PID:~0,2%" equ "0x" goto pid -echo "Parameter 3:pid is fail" -exit 1 -:pid -echo %PID% -rem ----------------------------------------------------------------------------------------------------------------------------------- - -if "%NOV%" equ "0" ( - set NOT_INCREASE_VER="-nov" - goto nov - ) -if "%NOV%" equ "1" goto nov -echo "Parameter 4:ver is 0 or 1" -exit 1 -:nov -echo var:%NOV% NOT_INCREASE_VER:%NOT_INCREASE_VER% - -rem ----------------------------------------------------------------------------------------------------------------------------------- - -if "%ISTWAIN%" equ "onlytwain" ( - set COMPILE_RANGE="-only-twain" - goto istwain -) -if "%ISTWAIN%" equ "all" goto istwain -echo "Parameter 5:istwain is onlytwain or all" -exit 1 -:istwain - -echo istwain:"%ISTWAIN%" COMPILE_RANGE:%COMPILE_RANGE% - - -rem ----------------------------------------------------------------------------------------------------------------------------------- - -echo oem=%OEM% -echo cpu=%CPU% -echo pid=%PID% - -if "%COMPILE_RANGE%"=="none" ( - set dev="" - for /f "tokens=1,2,* " %%i in ('reg QUERY "HKEY_CLASSES_ROOT\CLSID\{2E1517DA-87BF-4443-984A-D2BF18F5A908}\LocalServer32" /ve') do set dev=%%k - echo dev=%dev% - - if "%dev%"=="" ( - echo "Can not find Visual-Studio installing path" - goto end - ) - call %dev%\..\..\..\vc\auxiliary\build\vcvars32.bat -) - -"%~dp0\sln\release\hgsetver.exe" "%~dp0\..\sdk\include\huagao\brand.h" -oem %OEM% -cpu %CPU% -pid %PID% %COMPILE_RANGE% %NOT_INCREASE_VER% -if %COMPILE_RANGE%=="none" ( - MSBuild.exe "%~dp0\lang\lang.vcxproj" /p:Configuration=Release /p:Platform=%CPU% - MSBuild.exe "%~dp0\device\scanner.vcxproj" /p:Configuration=Release /p:Platform=%CPU% - MSBuild.exe "%~dp0\sane\sane.vcxproj" /p:Configuration=Release /p:Platform=%CPU% -) -MSBuild.exe "%~dp0\twain\twain.vcxproj" /p:Configuration=Release /p:Platform=%CPU% - - -:end diff --git a/build_all.bat b/build_all.bat index 39a5895..d5e876c 100644 --- a/build_all.bat +++ b/build_all.bat @@ -1,85 +1,167 @@ +REM build_all.bat all|hg|hw|lsc|cts... x86|x64 echo off -set OEM="" -set NOV="" +set OEM=%1 +set CPU=%2 -if "%1"=="hw" ( - set OEM=%1 -) else if "%1"=="lsc" ( - set OEM=%1 -) else if "%1"=="cts" ( - set OEM=%1 -)else if "%2"=="hw" ( - set OEM=%2 -) else if "%2"=="lsc" ( - set OEM=%2 -) else if "%2"=="cts" ( - set OEM=%2 -)else if "%3"=="hw" ( - set OEM=%3 -) else if "%3"=="lsc" ( - set OEM=%3 -) else if "%3"=="cts" ( - set OEM=%3 -) -if "%1"=="nov" ( - set NOV=%1 -) else if "%2"=="nov" ( - set NOV=%2 -) else if "%3"=="nov" ( - set NOV=%3 -) -echo oem=%OEM% -if "%CPU%"=="" ( - set CPU=x86 -) +set BUILD_HG=false +set BUILD_HW=false +set BUILD_LSC=false +set BUILD_CTS=false +set BUILD_ZJ=false + +set BUILD_X86=true +set BUILD_X64=true -echo build -cpu %CPU% -oem %OEM% %NOV% -set CPU=x64 if "%OEM%"=="hw" ( - build.bat %OEM% x64 0x1000 %NOV% - build.bat %OEM% x64 onlytwain 0x1002 nov - build.bat %OEM% x64 onlytwain 0x7000 nov - build.bat %OEM% x64 onlytwain 0x7002 nov - build.bat %OEM% x64 onlytwain 0x7039 nov - build.bat %OEM% x64 onlytwain 0x8000 nov - build.bat %OEM% x64 onlytwain 0x9000 nov - set CPU=x86 - build.bat %OEM% x86 0x1000 nov - build.bat %OEM% x86 onlytwain 0x1002 nov - build.bat %OEM% x86 onlytwain 0x7000 nov - build.bat %OEM% x86 onlytwain 0x7002 nov - build.bat %OEM% x86 onlytwain 0x7039 nov - build.bat %OEM% x86 onlytwain 0x8000 nov - build.bat %OEM% x86 onlytwain 0x9000 nov + set BUILD_HW=true ) else if "%OEM%" == "lsc" ( - build.bat %OEM% x64 0x8420 %NOV% - build.bat %OEM% x64 onlytwain 0x8520 nov - build.bat %OEM% x64 onlytwain 0x8620 nov - build.bat %OEM% x64 onlytwain 0x8730 nov - set CPU=x86 - build.bat %OEM% x86 0x8420 nov - build.bat %OEM% x86 onlytwain 0x8520 nov - build.bat %OEM% x86 onlytwain 0x8620 nov - build.bat %OEM% x86 onlytwain 0x8730 nov + set BUILD_LSC=true ) else if "%OEM%" == "cts" ( - build.bat %OEM% x64 0x6006 %NOV% - build.bat %OEM% x64 onlytwain 0x6005 nov - build.bat %OEM% x64 onlytwain 0x0238 nov - build.bat %OEM% x64 onlytwain 0x0138 nov - set CPU=x86 - build.bat %OEM% x86 0x6006 nov - build.bat %OEM% x86 onlytwain 0x6005 nov - build.bat %OEM% x86 onlytwain 0x0238 nov - build.bat %OEM% x86 onlytwain 0x0138 nov + set BUILD_CTS=true +) else if "%OEM%" == "zj" ( + set BUILD_ZJ=true +) else if "%OEM%" == "all" ( + set BUILD_HG=true + set BUILD_HW=true + set BUILD_LSC=true + set BUILD_CTS=true + set BUILD_ZJ=true )else ( - build.bat x64 0x100 %NOV% - build.bat x64 onlytwain 0x200 nov - build.bat x64 onlytwain 0x300 nov - build.bat x64 onlytwain 0x400 nov - set CPU=x86 - build.bat x86 0x100 nov - build.bat x86 onlytwain 0x200 nov - build.bat x86 onlytwain 0x300 nov - build.bat x86 onlytwain 0x400 nov + set BUILD_HG=true + set OEM=hg ) + +if "%CPU%"=="x86" ( + set BUILD_X64=false +) else if "%CPU%"=="x64" ( + set BUILD_X86=false +) else ( + set CPU=x64 and x86 +) + +echo build OEM:%OEM%, ARCH:%CPU% + +rem ----------------------------------------------------------------------------------------------------------------------------------- + +if "%VSCMD_VER%" neq "" goto compile +set dev="" +for /f "tokens=1,2,* " %%i in ('reg QUERY "HKEY_CLASSES_ROOT\CLSID\{2E1517DA-87BF-4443-984A-D2BF18F5A908}\LocalServer32" /ve') do set dev=%%k +echo dev=%dev% + +if %dev% == "" ( + echo "Can not find Visual-Studio installing path" + goto end +) +call %dev%\..\..\..\vc\auxiliary\build\vcvars64.bat + + + +rem ------------------------------------------------------------------------------------------------------------------------------------------------------ + +:compile + +if "%BUILD_HW%"=="true" ( + if "%BUILD_X86%"=="true" call :compile_hw hw x86 + if %ERRORLEVEL% neq 0 goto end + if "%BUILD_X64%"=="true" call :compile_hw hw x64 + if %ERRORLEVEL% neq 0 goto end +) +if "%BUILD_LSC%"=="true" ( + if "%BUILD_X86%"=="true" call :compile_lsc lsc x86 + if %ERRORLEVEL% neq 0 goto end + if "%BUILD_X64%"=="true" call :compile_lsc lsc x64 + if %ERRORLEVEL% neq 0 goto end +) +if "%BUILD_CTS%"=="true" ( + if "%BUILD_X86%"=="true" call :compile_ct cts x86 + if %ERRORLEVEL% neq 0 goto end + if "%BUILD_X64%"=="true" call :compile_ct cts x64 + if %ERRORLEVEL% neq 0 goto end +) +if "%BUILD_ZJ%"=="true" ( + if "%BUILD_X86%"=="true" call :compile_zj zj x86 + if %ERRORLEVEL% neq 0 goto end + if "%BUILD_X64%"=="true" call :compile_zj zj x64 + if %ERRORLEVEL% neq 0 goto end +) +if "%BUILD_HG%"=="true" ( + if "%BUILD_X86%"=="true" call :compile_hg hg x86 + if %ERRORLEVEL% neq 0 goto end + if "%BUILD_X64%"=="true" call :compile_hg hg x64 +) +goto end + + +rem ------------------------------------------------------------------------------------------------------------------------------------------------------ +REM parameters for all OEM compiling procedure are: oem cpu + +:compile_hg + call build_base.bat %1 %2 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 100 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 200 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 300 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 400 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% +EXIT /B 0 + +:compile_hw + call build_base.bat %1 %2 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 1000 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 1002 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 7000 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 7002 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 7039 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 8000 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 9000 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% +EXIT /B 0 + +:compile_lsc + call build_base.bat %1 %2 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 8420 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 8520 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 8620 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 8730 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% +EXIT /B 0 + +:compile_ct + call build_base.bat %1 %2 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 138 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 238 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 6005 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 6006 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% +EXIT /B 0 + +:compile_zj + call build_base.bat %1 %2 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% + call build_ds.bat %1 %2 9200 + if %ERRORLEVEL% neq 0 EXIT /B %ERRORLEVEL% +EXIT /B 0 + + + +:end +echo final result = %ERRORLEVEL% diff --git a/build_all_2.bat b/build_all_2.bat deleted file mode 100644 index 9ce5c8c..0000000 --- a/build_all_2.bat +++ /dev/null @@ -1,57 +0,0 @@ -@echo off -echo "Parameter 1:hg | lsc| hw | zj | cts" -echo "Parameter 2:x86 | x64 " -echo "Parameter 3:0x100 | 0x... " -echo "Parameter 4:0 | 1 , is 1 var++ ,is 0 var unchanged " -echo "Parameter 5:onlytwain | all ,is onlytwain build twain ,is all ,build scanner.dll sane.dll and twain..." - - -call build.bat hg x86 0x100 0 all -call build.bat hg x86 0x200 0 onlytwain -call build.bat hg x86 0x300 0 onlytwain -call build.bat hg x86 0x400 0 onlytwain - -call build.bat hg x64 0x100 0 all -call build.bat hg x64 0x200 0 onlytwain -call build.bat hg x64 0x300 0 onlytwain -call build.bat hg x64 0x400 0 onlytwain - -call build.bat hw x86 0x1000 0 all -call build.bat hw x86 0x1002 0 onlytwain -call build.bat hw x86 0x7000 0 onlytwain -call build.bat hw x86 0x7002 0 onlytwain -call build.bat hw x86 0x7039 0 onlytwain -call build.bat hw x86 0x8000 0 onlytwain -call build.bat hw x86 0x9000 0 onlytwain - -call build.bat hw x64 0x1000 0 all -call build.bat hw x64 0x1002 0 onlytwain -call build.bat hw x64 0x7000 0 onlytwain -call build.bat hw x64 0x7002 0 onlytwain -call build.bat hw x64 0x7039 0 onlytwain -call build.bat hw x64 0x8000 0 onlytwain -call build.bat hw x64 0x9000 0 onlytwain - -call build.bat lsc x86 0x8420 0 all -call build.bat lsc x86 0x8520 0 onlytwain -call build.bat lsc x86 0x8620 0 onlytwain -call build.bat lsc x86 0x8730 0 onlytwain - -call build.bat lsc x64 0x8420 0 all -call build.bat lsc x64 0x8520 0 onlytwain -call build.bat lsc x64 0x8620 0 onlytwain -call build.bat lsc x64 0x8730 0 onlytwain - -call build.bat cts x86 0x6006 0 all -call build.bat cts x86 0x6005 0 onlytwain -call build.bat cts x86 0x0238 0 onlytwain -call build.bat cts x86 0x0138 0 onlytwain - -call build.bat cts x64 0x6006 0 all -call build.bat cts x64 0x6005 0 onlytwain -call build.bat cts x64 0x0238 0 onlytwain -call build.bat cts x64 0x0138 0 onlytwain - -call build.bat zj x64 0x9200 0 all - -call build.bat zj x86 0x9200 0 all \ No newline at end of file diff --git a/build_base.bat b/build_base.bat new file mode 100644 index 0000000..3fe03d0 --- /dev/null +++ b/build_base.bat @@ -0,0 +1,107 @@ +@echo off +echo "Parameter 1:hg | lsc| hw | zj | cts" +echo "Parameter 2:x86 | x64 " + +set OEM=%1 +set CPU=%2 +set OEM_DIR="" +set TMP_PATH=%~dp0..\tmp\%CPU% +set BIN_PATH=%~dp0..\release\win\%CPU% +set LIB_PATH=%~dp0..\sdk\lib\win\%CPU% + +rem ----------------------------------------------------------------------------------------------------------------------------------- + +if "%OEM%" equ "hg" ( + set OEM_DIR=huagao + set CL=/DOEM_HUAGAO /DBACKEND_NAME=hgsane + goto oem +) +if "%OEM%" equ "hw" ( + set OEM_DIR=hanvon + set CL=/DOEM_HANWANG /DBACKEND_NAME=hwsane + goto oem +) +if "%OEM%" equ "lsc" ( + set OEM_DIR=lanxum + set CL=/DOEM_LISICHENG /DBACKEND_NAME=lscsane + goto oem +) +if "%OEM%" equ "zj" ( + set OEM_DIR=zhongj + set CL=/DOEM_ZHONGJING /DBACKEND_NAME=zjsane + goto oem +) +if "%OEM%" equ "cts" ( + set OEM_DIR=cunten + set CL=/DOEM_CANGTIAN /DBACKEND_NAME=ctssane + goto oem +) +echo "Parameter 1:oem is fail" +exit 1 +:oem +echo %OEM% +rem ----------------------------------------------------------------------------------------------------------------------------------- + +if "%CPU%" equ "x64" goto sys +if "%CPU%" equ "x86" goto sys +echo "Parameter 2:sys is fail" +exit 1 +:sys +echo %CPU% +rem ----------------------------------------------------------------------------------------------------------------------------------- + +set TMP_PATH=%TMP_PATH%\%OEM_DIR%\Release +set BIN_PATH=%BIN_PATH%\OEM\%OEM_DIR% +set LIB_PATH=%LIB_PATH%\OEM\%OEM_DIR% + +rem ----------------------------------------------------------------------------------------------------------------------------------- + +echo oem=%OEM% +echo cpu=%CPU% +echo pe-path=%BIN_PATH% +echo lib-path=%LIB_PATH% +echo tmp-path=%TMP_PATH% + +rem ----------------------------------------------------------------------------------------------------------------------------------- + +if "%VSCMD_VER%" neq "" goto compile +set dev="" +for /f "tokens=1,2,* " %%i in ('reg QUERY "HKEY_CLASSES_ROOT\CLSID\{2E1517DA-87BF-4443-984A-D2BF18F5A908}\LocalServer32" /ve') do set dev=%%k +echo dev=%dev% + +if %dev% == "" ( + echo "Can not find Visual-Studio installing path" + goto end +) +:env +call %dev%\..\..\..\vc\auxiliary\build\vcvars64.bat + + +rem ----------------------------------------------------------------------------------------------------------------------------------- + +:compile + +"%~dp0\sln\release\hgsetver.exe" "%~dp0\..\sdk\include\huagao\brand.h" -oem %OEM% -cpu %CPU% -nov + +mkdir %LIB_PATH% + +MSBuild.exe "%~dp0\lang\lang.vcxproj" /p:Configuration=Release /p:Platform=%CPU% /p:IntDir=%TMP_PATH%\lang\ /p:OutDir=%BIN_PATH%\ +if %ERRORLEVEL% neq 0 goto end +call :move_libs %BIN_PATH% lang %LIB_PATH% +MSBuild.exe "%~dp0\device\scanner.vcxproj" /p:Configuration=Release /p:Platform=%CPU% /p:IntDir=%TMP_PATH%\scanner\ /p:OutDir=%BIN_PATH%\ +if %ERRORLEVEL% neq 0 goto end +call :move_libs %BIN_PATH% scanner %LIB_PATH% +MSBuild.exe "%~dp0\sane\sane.vcxproj" /p:Configuration=Release /p:Platform=%CPU% /p:IntDir=%TMP_PATH%\sane\ /p:OutDir=%BIN_PATH%\ +if %ERRORLEVEL% neq 0 goto end +call :move_libs %BIN_PATH% sane %LIB_PATH% +goto end + +REM move_libs src_dir src_name dst_dir + +:move_libs +move /Y "%1\%2.exp" "%3" +move /Y "%1\%2.lib" "%3" +move /Y "%1\%2.pdb" "%3" +EXIT /B 0 + +:end diff --git a/build_ds.bat b/build_ds.bat new file mode 100644 index 0000000..25c764c --- /dev/null +++ b/build_ds.bat @@ -0,0 +1,115 @@ +@echo off +echo "Parameter 1:hg | lsc| hw | zj | cts" +echo "Parameter 2:x86 | x64 " +echo "Parameter 3: 100 | 200 ... " + +set OEM=%1 +set CPU=%2 +set PID=%3 +set OEM_DIR="" +set NAME=twain%3.ds +set TMP_PATH=%~dp0..\tmp\%CPU% +set BIN_PATH=%~dp0..\release\win\%CPU% +set LIB_PATH=%~dp0..\sdk\lib\win\%CPU% + +rem ----------------------------------------------------------------------------------------------------------------------------------- + +if "%OEM%" equ "hg" ( + set OEM_DIR=huagao + set CL=/DOEM_HUAGAO /DPRODUCT_ID=%PID% + set NAME=huagao%NAME% + goto oem +) +if "%OEM%" equ "hw" ( + set OEM_DIR=hanvon + set CL=/DOEM_HANWANG /DPRODUCT_ID=%PID% + set NAME=hanvon%NAME% + goto oem +) +if "%OEM%" equ "lsc" ( + set OEM_DIR=lanxum + set CL=/DOEM_LISICHENG /DPRODUCT_ID=%PID% + set NAME=lanxum%NAME% + goto oem +) +if "%OEM%" equ "zj" ( + set OEM_DIR=zhongj + set CL=/DOEM_ZHONGJING /DPRODUCT_ID=%PID% + set NAME=microtek%NAME% + goto oem +) +if "%OEM%" equ "cts" ( + set OEM_DIR=cunten + set CL=/DOEM_CANGTIAN /DPRODUCT_ID=%PID% + set NAME=cumtenn%NAME% + goto oem +) +echo "Parameter 1:oem is fail" +exit 1 +:oem +echo %OEM% +rem ----------------------------------------------------------------------------------------------------------------------------------- + +if "%CPU%" equ "x64" goto sys +if "%CPU%" equ "x86" goto sys +echo "Parameter 2:sys is fail" +exit 1 +:sys +echo %CPU% +rem ----------------------------------------------------------------------------------------------------------------------------------- + +if "%PID%" equ "" ( + echo "Lost PID parameter" + exit 1 +) + +set TMP_PATH=%TMP_PATH%\%OEM_DIR%\Release +set BIN_PATH=%BIN_PATH%\OEM\%OEM_DIR% +set LIB_PATH=%LIB_PATH%\OEM\%OEM_DIR% + +rem ----------------------------------------------------------------------------------------------------------------------------------- + +echo oem=%OEM% +echo cpu=%CPU% +echo pe-path=%BIN_PATH% +echo lib-path=%LIB_PATH% +echo tmp-path=%TMP_PATH% + +rem ----------------------------------------------------------------------------------------------------------------------------------- + +if "%VSCMD_VER%" neq "" goto compile +set dev="" +for /f "tokens=1,2,* " %%i in ('reg QUERY "HKEY_CLASSES_ROOT\CLSID\{2E1517DA-87BF-4443-984A-D2BF18F5A908}\LocalServer32" /ve') do set dev=%%k +echo dev=%dev% + +if %dev% == "" ( + echo "Can not find Visual-Studio installing path" + goto end +) +:env +call %dev%\..\..\..\vc\auxiliary\build\vcvars64.bat + + +rem ----------------------------------------------------------------------------------------------------------------------------------- + +:compile + +mkdir %LIB_PATH% + +echo delete %TMP_PATH%\twain\huagaods.obj ... +del "%TMP_PATH%\twain\*.obj" /q /f +MSBuild.exe "%~dp0\twain\twain.vcxproj" /p:Configuration=Release /p:Platform=%CPU% /p:IntDir=%TMP_PATH%\twain\ /p:OutDir=%BIN_PATH% /p:TargetName=%NAME% +if %ERRORLEVEL% neq 0 goto end +move /Y "%BIN_PATH%\%NAME%.dll" "%BIN_PATH%\%NAME%" +call :move_libs %BIN_PATH% %NAME% %LIB_PATH% +goto end + +REM move_libs src_dir src_name dst_dir + +:move_libs +move /Y "%1\%2.exp" "%3" +move /Y "%1\%2.lib" "%3" +move /Y "%1\%2.pdb" "%3" +EXIT /B 0 + +:end diff --git a/device/scanner.vcxproj b/device/scanner.vcxproj index 8692835..eee4603 100644 --- a/device/scanner.vcxproj +++ b/device/scanner.vcxproj @@ -73,36 +73,36 @@ true $(SolutionDir)..\..\code_device\hgdriver\3rdparty\nick;$(SolutionDir)..\..\sdk\include\opencv\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\cyusb\inc\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\libtiff\include\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\log4cplus\include\;$(SolutionDir)..\..\code_device\sdk\;$(SolutionDir)..\..\code_device\hgdriver\ImageProcess\;$(SolutionDir)..\..\sdk\include\;$(SolutionDir)..\..\code_device\hgdriver\hgdev\;$(SolutionDir)..\..\code_device\hgdriver\wrapper\;$(ProjectDir);$(SolutionDir)..\..\code_device\hgdriver\3rdparty\tiff\include\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\openssl\include;$(IncludePath) - $(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(LibraryPath) - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\oem\huagao;$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(LibraryPath) + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ false $(SolutionDir)..\..\code_device\hgdriver\3rdparty\nick;$(SolutionDir)..\..\sdk\include\opencv\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\cyusb\inc\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\libtiff\include\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\log4cplus\include\;$(SolutionDir)..\..\code_device\sdk\;$(SolutionDir)..\..\code_device\hgdriver\ImageProcess\;$(SolutionDir)..\..\sdk\include\;$(SolutionDir)..\..\code_device\hgdriver\hgdev\;$(SolutionDir)..\..\code_device\hgdriver\wrapper\;$(ProjectDir);$(SolutionDir)..\..\code_device\hgdriver\3rdparty\tiff\include\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\openssl\include;$(IncludePath) - $(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(LibraryPath) - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\oem\huagao;$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(LibraryPath) + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ true $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\code_device\hgdriver\3rdparty\nick;$(SolutionDir)..\..\sdk\include\opencv\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\cyusb\inc\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\libtiff\include\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\log4cplus\include\;$(SolutionDir)..\..\code_device\sdk\;$(SolutionDir)..\..\code_device\hgdriver\ImageProcess\;$(SolutionDir)..\..\sdk\include\;$(SolutionDir)..\..\code_device\hgdriver\hgdev\;$(SolutionDir)..\..\code_device\hgdriver\wrapper\;$(ProjectDir);$(SolutionDir)..\..\code_device\hgdriver\3rdparty\tiff\include\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\openssl\include;$(IncludePath) - $(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(LibraryPath) + $(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\oem\huagao;$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(LibraryPath) false $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\code_device\hgdriver\3rdparty\nick;$(SolutionDir)..\..\sdk\include\opencv\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\cyusb\inc\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\libtiff\include\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\log4cplus\include\;$(SolutionDir)..\..\code_device\sdk\;$(SolutionDir)..\..\code_device\hgdriver\ImageProcess\;$(SolutionDir)..\..\sdk\include\;$(SolutionDir)..\..\code_device\hgdriver\hgdev\;$(SolutionDir)..\..\code_device\hgdriver\wrapper\;$(ProjectDir);$(SolutionDir)..\..\code_device\hgdriver\3rdparty\tiff\include\;$(SolutionDir)..\..\code_device\hgdriver\3rdparty\openssl\include;$(IncludePath) - $(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(LibraryPath) + $(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\oem\huagao;$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(LibraryPath) Level3 true - WIN32;HGSCANNER_EXPORT;CUSTOM_USBVIEW;OEM_NONE;_DIRECT_BUILD;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + WIN32;HGSCANNER_EXPORT;CUSTOM_USBVIEW;_DIRECT_BUILD;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true 4996 MultiThreadedDebug @@ -118,15 +118,8 @@ - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir %FINAL_DIR% -copy "$(TargetPath)" "$(SolutionDir)..\..\release\win\$(PlatformTarget)\$(Configuration)" -copy "$(TargetPath)" C:\Program Files\HuaGoScan /y -copy "$(TargetPath)" F:\boxroom\HuaGoScan /y -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" - + + @@ -135,13 +128,11 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" true true true - WIN32;HGSCANNER_EXPORT;CUSTOM_USBVIEW;OEM_NONE;_DIRECT_BUILD;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + WIN32;HGSCANNER_EXPORT;CUSTOM_USBVIEW;_DIRECT_BUILD;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true 4996 stdcpp17 MultiThreaded - - Console @@ -156,19 +147,15 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir %FINAL_DIR% -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" - + + Level3 true - HGSCANNER_EXPORT;CUSTOM_USBVIEW;OEM_NONE;_DIRECT_BUILD;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + HGSCANNER_EXPORT;CUSTOM_USBVIEW;_DIRECT_BUILD;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true 4996; MultiThreadedDebug @@ -182,14 +169,8 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" $(ProjectDir)device.def - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir %FINAL_DIR% -copy "$(TargetPath)" "$(SolutionDir)..\..\release\win\$(PlatformTarget)\$(Configuration)" -copy "$(TargetPath)" "C:\Program Files\HuaGoScan" -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" - + + @@ -198,7 +179,7 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" true true true - HGSCANNER_EXPORT;CUSTOM_USBVIEW;OEM_NONE;NDEBUG;_CONSOLE;_DIRECT_BUILD;%(PreprocessorDefinitions) + HGSCANNER_EXPORT;CUSTOM_USBVIEW;NDEBUG;_CONSOLE;_DIRECT_BUILD;%(PreprocessorDefinitions) true 4996; MultiThreaded @@ -215,11 +196,8 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" $(ProjectDir)device.def - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir %FINAL_DIR% -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" + + diff --git a/lang/lang.vcxproj b/lang/lang.vcxproj index 934e19c..060a9cf 100644 --- a/lang/lang.vcxproj +++ b/lang/lang.vcxproj @@ -71,23 +71,23 @@ - $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\lang - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\sdk\include;$(IncludePath) - $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\lang\ - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\sdk\include;$(IncludePath) - $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\lang - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\sdk\include;$(IncludePath) - $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\lang\ - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\sdk\include;$(IncludePath) @@ -106,14 +106,8 @@ lang.def - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -mkdir %FINAL_DIR% -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" - - - + + @@ -137,19 +131,9 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" lang.def - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -set FINAL_LANGDIR=$(SolutionDir)..\..\release\win\$(PlatformTarget)\Release -mkdir %FINAL_DIR% -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" -copy $(OutDir)$(TargetName)$(TargetExt) "%FINAL_LANGDIR%" /y - - - - + @@ -167,13 +151,8 @@ copy $(OutDir)$(TargetName)$(TargetExt) "%FINAL_LANGDIR%" /y lang.def - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -mkdir %FINAL_DIR% -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" - - + + @@ -197,22 +176,9 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" lang.def - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration) -set FINAL_LANGDIR=$(SolutionDir)..\..\release\win\$(PlatformTarget)\Release -mkdir %FINAL_DIR% -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" -copy $(OutDir)$(TargetName)$(TargetExt) "%FINAL_LANGDIR%" /y - - - - - - - + diff --git a/sane/sane.vcxproj b/sane/sane.vcxproj index 50c311d..00fef52 100644 --- a/sane/sane.vcxproj +++ b/sane/sane.vcxproj @@ -74,36 +74,36 @@ true $(SolutionDir)..\..\sdk\include;$(SolutionDir)..\..\code_device\include\;$(IncludePath) - $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\OEM\huagao;$(LibraryPath) - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\oem\huagao;$(LibraryPath) + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ false $(SolutionDir)..\..\sdk\include;$(SolutionDir)..\..\code_device\include\;$(IncludePath) - $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\OEM\huagao;$(LibraryPath) - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\oem\huagao;$(LibraryPath) + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ true $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\sdk\include;$(SolutionDir)..\..\code_device\include\;$(IncludePath) - $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\OEM\huagao;$(LibraryPath) + $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\oem\huagao;$(LibraryPath) false $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(SolutionDir)..\..\sdk\include;$(SolutionDir)..\..\code_device\include\;$(IncludePath) - $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\OEM\huagao;$(LibraryPath) + $(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration);$(ProjectDir)..\..\sdk\lib\win\$(PlatformTarget)\oem\huagao;$(LibraryPath) Level3 true - BACKEND_NAME=hgsane;TWPP_IS_DS;EXPORT_SANE_API;WIN32;OEM_NONE;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + TWPP_IS_DS;EXPORT_SANE_API;WIN32;OEM_NONE;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true stdcpp17 4996 @@ -118,14 +118,8 @@ - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir %FINAL_DIR% -copy "$(TargetPath)" "$(SolutionDir)..\..\release\win\$(PlatformTarget)\$(Configuration)" -copy "$(TargetPath)" F:\boxroom\HuaGoScan /y -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" - + + @@ -134,7 +128,7 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" true true true - BACKEND_NAME=hgsane;TWPP_IS_DS;EXPORT_SANE_API;WIN32;OEM_NONE;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + TWPP_IS_DS;EXPORT_SANE_API;WIN32;OEM_NONE;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true stdcpp17 4996 @@ -150,19 +144,15 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" UseLinkTimeCodeGeneration - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir %FINAL_DIR% -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" - + + Level3 true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions);BACKEND_NAME=hgsane;TWPP_IS_DS;EXPORT_SANE_API;OEM_NONE + _DEBUG;_CONSOLE;%(PreprocessorDefinitions);TWPP_IS_DS;EXPORT_SANE_API;OEM_NONE true 4996 MultiThreadedDebug @@ -174,13 +164,8 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" $(ProjectDir)sane.def - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir %FINAL_DIR% -copy "$(TargetPath)" "$(SolutionDir)..\..\release\win\$(PlatformTarget)\$(Configuration)" -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" - + + @@ -189,7 +174,7 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" true true true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions);BACKEND_NAME=hgsane;TWPP_IS_DS;EXPORT_SANE_API;OEM_NONE + NDEBUG;_CONSOLE;%(PreprocessorDefinitions);TWPP_IS_DS;EXPORT_SANE_API;OEM_NONE true 4996 MultiThreaded @@ -204,12 +189,8 @@ move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" UseLinkTimeCodeGeneration - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir %FINAL_DIR% -move /Y "$(OutDirFullPath)$(ProjectName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(ProjectName).pdb" "%FINAL_DIR%" - + + diff --git a/sln/Release/hgsetver.exe b/sln/Release/hgsetver.exe index 6586f3a560a8102ea4ee37866091254bf8de36ce..8bb30d06989e6c0efa098677008677f1e83d7be9 100644 GIT binary patch delta 29717 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

i+94xga;CKB^*e&ln|15SE8H7 zghnhic#a#S3DQJq3>vFuy5@F`LvybtU-O`*Nb{)1t=X)3TJyZ-Wlgo_u;y(|o#wpe zbIm19tL8tNs~Ruu5N(83r!{LAXqRZ6YqVRmd$jwtN41UG{?S9C$3;(!o*%tF`qAi$ z=;xyE*12?Bbcb}m>HgAX>X+(s^bhFW`c3*5^d~VM_BR9=MjB2V-Zy+~P{j<7iHM1c zNs5^n^FYiaF|L^HG0(@Gj(HCQ)1{anW7=bWkLg5%RT}+_0mk9RaN}5Glrh?gfiuCF zY@BJd8|R^kEHgTc_oAUZXe=^5YOFABGHw&cw0{{78Y4}UOi!3jntm}&h%JfzBz8pH z`M4qRv*JIDzY-s6PDYD4Y5v&kZMg&18v>q7bf1BxGM31#A4X5Dsflh zD~X2^-%k8Gk!!&{X)-LT*OX}9(+tqgMQy&P9S}V$dTDfS^dqpq+tFvEKZ?G9zTFlb zrW>!*>Ed)#bSXNgu3X1-Gg11M?zy_Q(|-C#l)7xONjz{S$pD@ z#E!&HsyUA5!U;6q8l}cpqtXOuf;AzUaEwcls7qQ<`=Vw$^_)Rz$Tk!jDh!o|ofsYW z!N^U9X2V583nrd6gLjNF#y2Ja=GMf_h)IdD$7IH=bjGZUsfekJ*%`AZ<{&KJ6w@4Y zG3E+}Qx&YOhP5?DJUwjhkWMY8bb{*l27rUNp8CuVBPentV-aQ>4ji zN;YMgR+_e%Ys|Ii<4xu(80Et)QI-@-rlk-=ZiQu^<)G!b<+R1wXlb`}ShxgLf-1&%z53Jodi^E6pjR5yhDd|PU@}+@$yg59 z4e5p~Lmp~touLGC*-pb=%x0$z4XCk;hIYETw&TMq1r}?lYpQ9DMt}H~2l%sI{|_f( B4{iVe delta 40466 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 diff --git a/sln/hgsetver/hgsetver.cpp b/sln/hgsetver/hgsetver.cpp index 0c37583..5635c99 100644 --- a/sln/hgsetver/hgsetver.cpp +++ b/sln/hgsetver/hgsetver.cpp @@ -428,11 +428,11 @@ namespace rc if (bgn) str.erase(0, bgn); } - static bool get_version_from_file(const wchar_t* file, int* v1, int* v2, int* v3, int* v4, std::wstring* company_name, std::wstring* short_company_name, std::wstring* vendor_name) + static bool get_version_from_file(const wchar_t* file, oem o, int* v1, int* v2, int* v3, int* v4, std::wstring* company_name, std::wstring* short_company_name, std::wstring* vendor_name) { std::wstring cont(load_file(file, NULL)), line(L""), tag(L"#define VERSION_MAIN"); int end = -1, bgn = -1; - oem o = OEM_NONE; + // oem o = OEM_NONE; if (v1) { @@ -489,22 +489,22 @@ namespace rc *v4 = _wtoi(cont.c_str() + bgn); } - tag = L"#define OEM_"; - { - bgn = find_line(cont, tag.c_str(), &end); - if (bgn < 0) - return false; - - line = cont.substr(bgn, end - bgn); - if (line.find(oem_str(OEM_HANWANG)) != std::wstring::npos) - o = OEM_HANWANG; - else if (line.find(oem_str(OEM_LISICHENG)) != std::wstring::npos) - o = OEM_LISICHENG; - else if (line.find(oem_str(OEM_CANGTIAN)) != std::wstring::npos) - o = OEM_CANGTIAN; - else if (line.find(oem_str(OEM_ZHONGJING)) != std::wstring::npos) - o = OEM_ZHONGJING; - } + //tag = L"#define OEM_"; + //{ + // bgn = find_line(cont, tag.c_str(), &end); + // if (bgn < 0) + // return false; + // + // line = cont.substr(bgn, end - bgn); + // if (line.find(oem_str(OEM_HANWANG)) != std::wstring::npos) + // o = OEM_HANWANG; + // else if (line.find(oem_str(OEM_LISICHENG)) != std::wstring::npos) + // o = OEM_LISICHENG; + // else if (line.find(oem_str(OEM_CANGTIAN)) != std::wstring::npos) + // o = OEM_CANGTIAN; + // else if (line.find(oem_str(OEM_ZHONGJING)) != std::wstring::npos) + // o = OEM_ZHONGJING; + //} bool found = false, is_oem = false; std::vector embed; @@ -1023,7 +1023,11 @@ namespace rc { prev = L"_ctssane_"; if (cont.find(prev) == std::wstring::npos) - return false; + { + prev = L"_zjsane_"; + if (cont.find(prev) == std::wstring::npos) + return false; + } } } @@ -1218,7 +1222,8 @@ static bool set_ver(const wchar_t* file, oem vendor, bool x86, int pid, int main patch *= 1000; patch += cur->tm_yday + 1; - while (change_oem(unic, vendor)) + //while (change_oem(unic, vendor)) + do { if (!nov) { @@ -1235,8 +1240,8 @@ static bool set_ver(const wchar_t* file, oem vendor, bool x86, int pid, int main break; ret = true; - break; - } + // break; + } while (0); if (ret) { @@ -1262,14 +1267,14 @@ static bool set_ver(const wchar_t* file, oem vendor, bool x86, int pid, int main base += L"\\..\\..\\..\\code_twain\\twain"; STR_TO_ABSOLUTE_PATH(base); wprintf_s(L"aaaa=%s\r\n", file); - if (rc::get_version_from_file(file, &main, &sub, &build, &patch, &cn, &scn, &vs)) + if (rc::get_version_from_file(file, vendor, &main, &sub, &build, &patch, &cn, &scn, &vs)) { if (!twain_only) { - rcf = base + L"\\..\\sane\\sane.vcxproj"; - STR_SIMPLIFY_PATH(rcf); - if (!rc::change_vcxproj_predefine(rcf.c_str(), vendor)) - std::wcout << "change predefines failed: " << rcf.c_str() << std::endl; + //rcf = base + L"\\..\\sane\\sane.vcxproj"; + //STR_SIMPLIFY_PATH(rcf); + //if (!rc::change_vcxproj_predefine(rcf.c_str(), vendor)) + // std::wcout << "change predefines failed: " << rcf.c_str() << std::endl; rcf = base + L"\\..\\sane\\sane.rc"; STR_SIMPLIFY_PATH(rcf); @@ -1281,10 +1286,10 @@ static bool set_ver(const wchar_t* file, oem vendor, bool x86, int pid, int main if (!rc::change_file(rcf.c_str(), ¶m, rc::change_sane_def)) std::wcout << "change exporting-definition failed: " << rcf.c_str() << std::endl; - rcf = base + L"\\..\\device\\scanner.vcxproj"; - STR_SIMPLIFY_PATH(rcf); - if (!rc::change_vcxproj_predefine(rcf.c_str(), vendor)) - std::wcout << "change predefines failed: " << rcf.c_str() << std::endl; + //rcf = base + L"\\..\\device\\scanner.vcxproj"; + //STR_SIMPLIFY_PATH(rcf); + //if (!rc::change_vcxproj_predefine(rcf.c_str(), vendor)) + // std::wcout << "change predefines failed: " << rcf.c_str() << std::endl; rcf = base + L"\\..\\device\\scanner.rc"; STR_SIMPLIFY_PATH(rcf); @@ -1297,14 +1302,14 @@ static bool set_ver(const wchar_t* file, oem vendor, bool x86, int pid, int main std::wcout << "change exporting-definition failed: " << rcf.c_str() << std::endl;*/ } - rcf = base + L"\\..\\twain\\twain.vcxproj"; - STR_SIMPLIFY_PATH(rcf); - param.change_out_dir = !twain_only; - if (!rc::change_file(rcf.c_str(), ¶m, rc::change_output)) - { - std::wcout << "change exporting-definition failed: " << rcf.c_str() << std::endl; - ret = false; - } + //rcf = base + L"\\..\\twain\\twain.vcxproj"; + //STR_SIMPLIFY_PATH(rcf); + //param.change_out_dir = !twain_only; + //if (!rc::change_file(rcf.c_str(), ¶m, rc::change_output)) + //{ + // std::wcout << "change exporting-definition failed: " << rcf.c_str() << std::endl; + // ret = false; + //} rcf = base + L"\\..\\..\\code_device\\build.sh"; STR_SIMPLIFY_PATH(rcf); diff --git a/twain/twain.vcxproj b/twain/twain.vcxproj index 9d16847..7883cd3 100644 --- a/twain/twain.vcxproj +++ b/twain/twain.vcxproj @@ -76,7 +76,7 @@ true $(SolutionDir)..\..\sdk\include\;$(IncludePath) $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(LibraryPath) huagaotwain400.ds @@ -86,13 +86,13 @@ true $(SolutionDir)..\..\sdk\include\;$(IncludePath) $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ false $(SolutionDir)..\..\sdk\include\;$(IncludePath) $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ $(LibraryPath) huagaotwain400.ds @@ -102,7 +102,7 @@ false $(SolutionDir)..\..\sdk\include\;$(IncludePath) $(SolutionDir)..\..\release\win\$(PlatformTarget)\OEM\huagao\ - $(SolutionDir)..\..\tmp\$(PlatformTarget)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)..\..\tmp\$(PlatformTarget)\huagao\$(Configuration)\$(ProjectName)\ @@ -123,13 +123,8 @@ - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).pdb" "%FINAL_DIR%" -move /Y "$(TargetPath)" "$(OutDirFullPath)$(TargetName)" -copy "$(OutDirFullPath)$(TargetName)" "$(WinDir)\twain_32\HuaGoTwain\x86" /y + + @@ -152,13 +147,8 @@ copy "$(OutDirFullPath)$(TargetName)" "$(WinDir)\twain_32\HuaGoTwain\x86" /y - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).pdb" "%FINAL_DIR%" -move /Y "$(TargetPath)" "$(OutDirFullPath)$(TargetName)" -copy "$(OutDirFullPath)$(TargetName)" "$(WinDir)\twain_32\HuaGoScan" /y + + @@ -183,12 +173,8 @@ copy "$(OutDirFullPath)$(TargetName)" "$(WinDir)\twain_32\HuaGoScan" /y - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).pdb" "%FINAL_DIR%" -move /Y "$(TargetPath)" "$(OutDirFullPath)$(TargetName)" + + @@ -214,12 +200,8 @@ move /Y "$(TargetPath)" "$(OutDirFullPath)$(TargetName)" - set FINAL_DIR=$(SolutionDir)..\..\sdk\lib\win\$(PlatformTarget)\$(Configuration)\..\oem\huagao -mkdir "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).exp" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).lib" "%FINAL_DIR%" -move /Y "$(OutDirFullPath)$(TargetName).pdb" "%FINAL_DIR%" -move /Y "$(TargetPath)" "$(OutDirFullPath)$(TargetName)" + +