Files
Alicho/build.bat
2025-10-24 18:17:58 +08:00

213 lines
6.2 KiB
Batchfile
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@echo off
REM ================================================================================================
REM Audio Backend Framework - Windows构建脚本
REM ================================================================================================
REM 描述: Windows平台的自动化构建脚本
REM 功能: Conan依赖安装、CMake配置、项目编译
REM 用法: build.bat [Debug|Release|clean|help]
REM ================================================================================================
setlocal EnableDelayedExpansion
REM 设置项目根目录
set PROJECT_ROOT=%~dp0
cd /d %PROJECT_ROOT%
REM 默认构建类型
set BUILD_TYPE=Release
set CLEAN_BUILD=0
REM 解析命令行参数
if "%1"=="" goto :parse_done
if /i "%1"=="Debug" set BUILD_TYPE=Debug
if /i "%1"=="Release" set BUILD_TYPE=Release
if /i "%1"=="clean" set CLEAN_BUILD=1
if /i "%1"=="help" goto :show_help
if /i "%1"=="-h" goto :show_help
if /i "%1"=="--help" goto :show_help
:parse_done
echo.
echo ========================================
echo Audio Backend Framework 构建系统
echo ========================================
echo 项目目录: %PROJECT_ROOT%
echo 构建类型: %BUILD_TYPE%
echo.
REM ================================================================================================
REM 清理构建
REM ================================================================================================
if %CLEAN_BUILD%==1 (
echo [清理] 正在清理构建目录...
if exist build (
rmdir /s /q build
echo [清理] 已删除 build 目录
)
if exist CMakeCache.txt (
del /f /q CMakeCache.txt
echo [清理] 已删除 CMakeCache.txt
)
echo [清理] 清理完成
goto :end
)
REM ================================================================================================
REM 检查必要工具
REM ================================================================================================
echo [检查] 验证必要工具...
where cmake >nul 2>nul
if %ERRORLEVEL% neq 0 (
echo [错误] 未找到 CMake请先安装 CMake
echo 下载地址: https://cmake.org/download/
goto :error
)
where conan >nul 2>nul
if %ERRORLEVEL% neq 0 (
echo [错误] 未找到 Conan请先安装 Conan
echo 安装命令: pip install conan
goto :error
)
echo [检查] ✓ CMake 已安装
echo [检查] ✓ Conan 已安装
REM ================================================================================================
REM 安装Conan依赖
REM ================================================================================================
echo.
echo [Conan] 正在安装依赖包...
echo [Conan] 构建类型: %BUILD_TYPE%
echo [Conan] C++标准: C++23
echo.
REM 创建build目录
if not exist build mkdir build
cd build
REM 执行Conan安装
conan install .. --output-folder=. --build=missing --settings=build_type=%BUILD_TYPE% --settings=compiler.cppstd=23
if %ERRORLEVEL% neq 0 (
echo [错误] Conan依赖安装失败
cd ..
goto :error
)
echo.
echo [Conan] ✓ 依赖安装成功
echo.
REM ================================================================================================
REM 配置CMake项目
REM ================================================================================================
echo [CMake] 正在配置项目...
echo [CMake] 构建类型: %BUILD_TYPE%
echo.
REM CMake配置
cmake .. -G "Visual Studio 17 2022" ^
-DCMAKE_BUILD_TYPE=%BUILD_TYPE% ^
-DCMAKE_TOOLCHAIN_FILE=generators/conan_toolchain.cmake ^
-DDAW_ENABLE_SIMD=ON ^
-DDAW_ENABLE_AVX512=ON ^
-DDAW_ENABLE_TESTS=ON ^
-DDAW_ENABLE_EXAMPLES=ON
if %ERRORLEVEL% neq 0 (
echo [错误] CMake配置失败
cd ..
goto :error
)
echo.
echo [CMake] ✓ 项目配置成功
echo.
REM ================================================================================================
REM 编译项目
REM ================================================================================================
echo [编译] 正在编译项目...
echo [编译] 配置: %BUILD_TYPE%
echo.
cmake --build . --config %BUILD_TYPE% --parallel
if %ERRORLEVEL% neq 0 (
echo [错误] 项目编译失败
cd ..
goto :error
)
echo.
echo [编译] ✓ 项目编译成功
echo.
REM 返回项目根目录
cd ..
REM ================================================================================================
REM 构建成功
REM ================================================================================================
echo.
echo ========================================
echo 构建成功!
echo ========================================
echo 构建类型: %BUILD_TYPE%
echo 输出目录: %PROJECT_ROOT%build\bin
echo 库目录: %PROJECT_ROOT%build\lib
echo.
echo 运行测试: cd build ^&^& ctest -C %BUILD_TYPE%
echo.
goto :end
REM ================================================================================================
REM 帮助信息
REM ================================================================================================
:show_help
echo.
echo Audio Backend Framework - Windows 构建脚本
echo.
echo 用法:
echo build.bat [选项]
echo.
echo 选项:
echo Debug - 构建Debug版本包含调试符号
echo Release - 构建Release版本默认优化编译
echo clean - 清理所有构建文件
echo help - 显示此帮助信息
echo.
echo 示例:
echo build.bat # 构建Release版本
echo build.bat Debug # 构建Debug版本
echo build.bat clean # 清理构建文件
echo.
echo 依赖要求:
echo - CMake 3.20+
echo - Conan 2.x
echo - Visual Studio 2022 或更高版本
echo - C++23 支持的编译器
echo.
goto :end
REM ================================================================================================
REM 错误处理
REM ================================================================================================
:error
echo.
echo ========================================
echo 构建失败!
echo ========================================
echo.
exit /b 1
REM ================================================================================================
REM 正常退出
REM ================================================================================================
:end
endlocal
exit /b 0