213 lines
6.2 KiB
Batchfile
213 lines
6.2 KiB
Batchfile
@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 |