diff --git a/Servers/Build_all.bat b/Servers/Build_all.bat new file mode 100644 index 00000000..fd26f87e --- /dev/null +++ b/Servers/Build_all.bat @@ -0,0 +1,248 @@ +@echo off +chcp 936 >nul +setlocal enabledelayedexpansion + +echo ============================================ +echo 服务端全部组件编译工具 +echo ============================================ +echo. + +:: ======== MSBuild ======== +set "MSBUILD=C:\PROGRA~2\MSBuild\12.0\Bin\MSBuild.exe" +if not exist "%MSBUILD%" ( + echo [错误] 找不到 MSBuild: %MSBUILD% + echo 请确认已安装 Visual Studio 2013 + pause + exit /b 1 +) + +:: ======== 项目路径 ======== +set "SERVER_ROOT=%~dp0" +set "PLATFORM_SLN=%SERVER_ROOT%Platform.sln" +set "GAME_ROOT=%SERVER_ROOT%游戏组件" +set "RUN_DIR=%SERVER_ROOT%..\运行" +set "RELEASE_OUT=%RUN_DIR%\Release\Ansi" +set "DEBUG_OUT=%RUN_DIR%\Debug\Ansi" + +:: ======== MFC/CRT DLL 路径 (VS2013) ======== +set "VS_REDIST=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist" +set "MFC_REL=!VS_REDIST!\x86\Microsoft.VC120.MFC" +set "CRT_REL=!VS_REDIST!\x86\Microsoft.VC120.CRT" +set "MFC_DBG=!VS_REDIST!\Debug_NonRedist\x86\Microsoft.VC120.DebugMFC" +set "CRT_DBG=!VS_REDIST!\Debug_NonRedist\x86\Microsoft.VC120.DebugCRT" + +:: ======== 计数器 ======== +set STEP=0 +set PLATFORM_R=0 +set PLATFORM_D=0 +set GAME_TOTAL=0 +set GAME_SR=0 +set GAME_SD=0 +set GAME_FR=0 +set GAME_FD=0 +set "FAIL_LIST=" + +echo MSBuild: %MSBUILD% +echo 平台方案: !PLATFORM_SLN! +echo 游戏组件: !GAME_ROOT! +echo Release输出: !RELEASE_OUT! +echo Debug输出: !DEBUG_OUT! +echo. + +:: ============================================================ +:: [第1步] 编译 Platform.sln (服务端核心组件) +:: ============================================================ +set /a STEP+=1 +echo ============================================ +echo [第!STEP!步] 编译服务端核心组件 (Platform.sln) +echo ============================================ + +echo 包含: 服务核心/内核引擎/网络服务/协调服务器 +echo 登录服务器/模块管理/游戏服务/游戏服务器 +echo 私人场服务/网站网关服务器/比赛服务 +echo. + +echo ^> Release 编译中... +"!MSBUILD!" "!PLATFORM_SLN!" /t:Build /p:Configuration=Release /p:Platform=Win32 /m /nologo /v:minimal +if !errorlevel! equ 0 ( + echo ^> Platform Release [成功] + set PLATFORM_R=1 +) else ( + echo ^> Platform Release [失败] + set "FAIL_LIST=!FAIL_LIST! Platform-Release" +) + +echo ^> Debug 编译中... +"!MSBUILD!" "!PLATFORM_SLN!" /t:Build /p:Configuration=Debug /p:Platform=Win32 /m /nologo /v:minimal +if !errorlevel! equ 0 ( + echo ^> Platform Debug [成功] + set PLATFORM_D=1 +) else ( + echo ^> Platform Debug [失败] + set "FAIL_LIST=!FAIL_LIST! Platform-Debug" +) +echo. + +:: ============================================================ +:: [第2步] 编译游戏组件 +:: ============================================================ +set /a STEP+=1 +echo ============================================ +echo [第!STEP!步] 编译游戏组件 +echo ============================================ +echo. + +if not exist "!GAME_ROOT!" ( + echo [警告] 找不到游戏组件目录: !GAME_ROOT! + echo 跳过游戏组件编译 +) else ( + for /d %%G in ("!GAME_ROOT!\*") do ( + if exist "%%G\GameProject.sln" ( + set /a GAME_TOTAL+=1 + set "GAME_NAME=%%~nxG" + echo -------------------------------------------- + echo [!GAME_TOTAL!] 游戏: !GAME_NAME! + echo -------------------------------------------- + + echo ^> Release... + "!MSBUILD!" "%%G\GameProject.sln" /t:Build /p:Configuration=Release /p:Platform=Win32 /m /nologo /v:minimal + if !errorlevel! equ 0 ( + echo ^> Release [成功] + set /a GAME_SR+=1 + ) else ( + echo ^> Release [失败] + set /a GAME_FR+=1 + set "FAIL_LIST=!FAIL_LIST! !GAME_NAME!-Release" + ) + + echo ^> Debug... + "!MSBUILD!" "%%G\GameProject.sln" /t:Build /p:Configuration=Debug /p:Platform=Win32 /m /nologo /v:minimal + if !errorlevel! equ 0 ( + echo ^> Debug [成功] + set /a GAME_SD+=1 + ) else ( + echo ^> Debug [失败] + set /a GAME_FD+=1 + set "FAIL_LIST=!FAIL_LIST! !GAME_NAME!-Debug" + ) + echo. + ) + ) +) + +:: ============================================================ +:: [第3步] 打包MFC/CRT运行时DLL +:: ============================================================ +set /a STEP+=1 +echo ============================================ +echo [第!STEP!步] 打包MFC/CRT运行时DLL +echo ============================================ +echo. + +set COPY_OK=0 +set COPY_FAIL=0 + +:: 确保输出目录存在 +if not exist "!RELEASE_OUT!" mkdir "!RELEASE_OUT!" +if not exist "!DEBUG_OUT!" mkdir "!DEBUG_OUT!" + +:: --- Release MFC --- +echo 复制 Release MFC/CRT DLL... +for %%F in (mfc120.dll mfcm120.dll) do ( + if exist "!MFC_REL!\%%F" ( + copy /y "!MFC_REL!\%%F" "!RELEASE_OUT!\%%F" >nul + if !errorlevel! equ 0 ( + echo %%F [OK] + set /a COPY_OK+=1 + ) else ( + echo %%F [失败] + set /a COPY_FAIL+=1 + ) + ) else ( + echo %%F [未找到源文件] + set /a COPY_FAIL+=1 + ) +) +:: --- Release CRT --- +for %%F in (msvcr120.dll msvcp120.dll) do ( + if exist "!CRT_REL!\%%F" ( + copy /y "!CRT_REL!\%%F" "!RELEASE_OUT!\%%F" >nul + if !errorlevel! equ 0 ( + echo %%F [OK] + set /a COPY_OK+=1 + ) else ( + echo %%F [失败] + set /a COPY_FAIL+=1 + ) + ) else ( + echo %%F [未找到源文件] + set /a COPY_FAIL+=1 + ) +) +echo. + +:: --- Debug MFC --- +echo 复制 Debug MFC/CRT DLL... +for %%F in (mfc120d.dll mfcm120d.dll) do ( + if exist "!MFC_DBG!\%%F" ( + copy /y "!MFC_DBG!\%%F" "!DEBUG_OUT!\%%F" >nul + if !errorlevel! equ 0 ( + echo %%F [OK] + set /a COPY_OK+=1 + ) else ( + echo %%F [失败] + set /a COPY_FAIL+=1 + ) + ) else ( + echo %%F [未找到源文件] + set /a COPY_FAIL+=1 + ) +) +:: --- Debug CRT --- +for %%F in (msvcr120d.dll msvcp120d.dll) do ( + if exist "!CRT_DBG!\%%F" ( + copy /y "!CRT_DBG!\%%F" "!DEBUG_OUT!\%%F" >nul + if !errorlevel! equ 0 ( + echo %%F [OK] + set /a COPY_OK+=1 + ) else ( + echo %%F [失败] + set /a COPY_FAIL+=1 + ) + ) else ( + echo %%F [未找到源文件] + set /a COPY_FAIL+=1 + ) +) +echo. + +:: ============================================================ +:: 编译汇总 +:: ============================================================ +echo ============================================ +echo 编译汇总 +echo ============================================ +echo. +echo --- 服务端核心 (Platform.sln) --- +if !PLATFORM_R! equ 1 (echo Release: 成功) else (echo Release: 失败) +if !PLATFORM_D! equ 1 (echo Debug: 成功) else (echo Debug: 失败) +echo. +echo --- 游戏组件 --- +echo 组件总数: !GAME_TOTAL! +echo Release 成功/失败: !GAME_SR!/!GAME_FR! +echo Debug 成功/失败: !GAME_SD!/!GAME_FD! +echo. +echo --- MFC/CRT DLL 打包 --- +echo 复制成功: !COPY_OK! 个 +echo 复制失败: !COPY_FAIL! 个 +echo. +if defined FAIL_LIST ( + echo 失败列表: + echo !FAIL_LIST! + echo. +) +echo Release 输出: !RELEASE_OUT! +echo Debug 输出: !DEBUG_OUT! +echo ============================================ +echo. +pause