基于webrtc仓库编译libyuv

该方法的使用前提是你得有一个已经成功编译过webrtc的环境

需要编译libyuv的库,想要使用x64位的指令集优化,用vs编译是不支持的,因此想到用ninja编译,这是谷歌推荐的。因为手上有个可以编译webrtc的环境,并且webrtc的thirdparty文件夹里有libyuv的库,因此想到借webrtc的环境编译libyuv,省的再去翻墙下载libyuv的环境了。

脚本如下:

把脚本放到webrtc的src目录下运行即可

chcp 65001

call gn gen libyuv_sdk\Release_x64 -ide=vs2019 --args="is_debug=false target_os=\"win\" target_cpu=\"x64\" use_custom_libcxx=false is_clang=true is_component_build=false"
call :replace_file "libyuv_internal.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Release_x64\obj\third_party\libyuv\"
call :replace_file "libjpeg.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Release_x64\obj\third_party\libjpeg_turbo\"
call :replace_file "simd.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Release_x64\obj\third_party\libjpeg_turbo\"
call :replace_file "simd_asm.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Release_x64\obj\third_party\libjpeg_turbo\"

call gn gen libyuv_sdk\Debug_x64 -ide=vs2019 --args="is_debug=true target_os=\"win\" target_cpu=\"x64\" use_custom_libcxx=false is_clang=true is_component_build=false"
call :replace_file "libyuv_internal.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Debug_x64\obj\third_party\libyuv\"
call :replace_file "libjpeg.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Debug_x64\obj\third_party\libjpeg_turbo\"
call :replace_file "simd.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Debug_x64\obj\third_party\libjpeg_turbo\"
call :replace_file "simd_asm.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Debug_x64\obj\third_party\libjpeg_turbo\"

ninja -v -C libyuv_sdk\Release_x64 libyuv_internal libjpeg simd simd_asm
ninja -v -C libyuv_sdk\Debug_x64 libyuv_internal libjpeg simd simd_asm

call gn gen libyuv_sdk\Release_x86 -ide=vs2019 --args="is_debug=false target_os=\"win\" target_cpu=\"x86\" use_custom_libcxx=false is_clang=true is_component_build=false"
call :replace_file "libyuv_internal.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Release_x86\obj\third_party\libyuv\"
call :replace_file "libjpeg.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Release_x86\obj\third_party\libjpeg_turbo\"
call :replace_file "simd.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Release_x86\obj\third_party\libjpeg_turbo\"
call :replace_file "simd_asm.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Release_x86\obj\third_party\libjpeg_turbo\"

call gn gen libyuv_sdk\Debug_x86 -ide=vs2019 --args="is_debug=true target_os=\"win\" target_cpu=\"x86\" use_custom_libcxx=false is_clang=true is_component_build=false"
call :replace_file "libyuv_internal.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Debug_x86\obj\third_party\libyuv\"
call :replace_file "libjpeg.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Debug_x86\obj\third_party\libjpeg_turbo\"
call :replace_file "simd.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Debug_x86\obj\third_party\libjpeg_turbo\"
call :replace_file "simd_asm.ninja" "/llvmlibthin" " " ".\libyuv_sdk\Debug_x86\obj\third_party\libjpeg_turbo\"

ninja -v -C libyuv_sdk\Release_x86 libyuv_internal libjpeg simd simd_asm
ninja -v -C libyuv_sdk\Debug_x86 libyuv_internal libjpeg simd simd_asm


rem 创建新文件夹
mkdir "..\libyuv_sdk\Release_x86\include"
mkdir "..\libyuv_sdk\Release_x86\lib"
mkdir "..\libyuv_sdk\Release_x64\include"
mkdir "..\libyuv_sdk\Release_x64\lib
mkdir "..\libyuv_sdk\Debug_x86\include"
mkdir "..\libyuv_sdk\Debug_x86\lib
mkdir "..\libyuv_sdk\Debug_x64\include"
mkdir "..\libyuv_sdk\Debug_x64\lib

.\third_party\llvm-build\Release+Asserts\bin\lld-link.exe /lib /out:..\libyuv_sdk\Release_x86\lib\libyuv.lib ^
.\libyuv_sdk\Release_x86\obj\third_party\libyuv\libyuv_internal.lib ^
.\libyuv_sdk\Release_x86\obj\third_party\libjpeg_turbo\libjpeg.lib ^
.\libyuv_sdk\Release_x86\obj\third_party\libjpeg_turbo\simd.lib ^
.\libyuv_sdk\Release_x86\obj\third_party\libjpeg_turbo\simd_asm.lib

.\third_party\llvm-build\Release+Asserts\bin\lld-link.exe /lib /out:..\libyuv_sdk\Release_x64\lib\libyuv.lib ^
.\libyuv_sdk\Release_x64\obj\third_party\libyuv\libyuv_internal.lib ^
.\libyuv_sdk\Release_x64\obj\third_party\libjpeg_turbo\libjpeg.lib ^
.\libyuv_sdk\Release_x64\obj\third_party\libjpeg_turbo\simd.lib ^
.\libyuv_sdk\Release_x64\obj\third_party\libjpeg_turbo\simd_asm.lib

.\third_party\llvm-build\Release+Asserts\bin\lld-link.exe /lib /out:..\libyuv_sdk\Debug_x86\lib\libyuv.lib ^
.\libyuv_sdk\Debug_x86\obj\third_party\libyuv\libyuv_internal.lib ^
.\libyuv_sdk\Debug_x86\obj\third_party\libjpeg_turbo\libjpeg.lib ^
.\libyuv_sdk\Debug_x86\obj\third_party\libjpeg_turbo\simd.lib ^
.\libyuv_sdk\Debug_x86\obj\third_party\libjpeg_turbo\simd_asm.lib

.\third_party\llvm-build\Release+Asserts\bin\lld-link.exe /lib /out:..\libyuv_sdk\Debug_x64\lib\libyuv.lib ^
.\libyuv_sdk\Debug_x64\obj\third_party\libyuv\libyuv_internal.lib ^
.\libyuv_sdk\Debug_x64\obj\third_party\libjpeg_turbo\libjpeg.lib ^
.\libyuv_sdk\Debug_x64\obj\third_party\libjpeg_turbo\simd.lib ^
.\libyuv_sdk\Debug_x64\obj\third_party\libjpeg_turbo\simd_asm.lib
rem 拷贝文件到新文件夹
xcopy ".\third_party\libyuv\include" "..\libyuv_sdk\Release_x86\include" /E /Y
rem xcopy ".\libyuv_sdk\Release_x86\obj\third_party\libyuv\libyuv_internal.lib" "..\libyuv_sdk\Release_x86\lib" /Y
rem xcopy ".\libyuv_sdk\Release_x86\obj\third_party\libjpeg_turbo\libjpeg.lib" "..\libyuv_sdk\Release_x86\lib" /Y
rem xcopy ".\libyuv_sdk\Release_x86\obj\third_party\libjpeg_turbo\simd.lib" "..\libyuv_sdk\Release_x86\lib" /Y
rem xcopy ".\libyuv_sdk\Release_x86\obj\third_party\libjpeg_turbo\simd_asm.lib" "..\libyuv_sdk\Release_x86\lib" /Y

xcopy ".\third_party\libyuv\include" "..\libyuv_sdk\Release_x64\include" /E /Y
rem xcopy ".\libyuv_sdk\Release_x64\obj\third_party\libyuv\libyuv_internal.lib" "..\libyuv_sdk\Release_x64\lib" /Y
rem xcopy ".\libyuv_sdk\Release_x64\obj\third_party\libjpeg_turbo\libjpeg.lib" "..\libyuv_sdk\Release_x64\lib" /Y
rem xcopy ".\libyuv_sdk\Release_x64\obj\third_party\libjpeg_turbo\simd.lib" "..\libyuv_sdk\Release_x64\lib" /Y
rem xcopy ".\libyuv_sdk\Release_x64\obj\third_party\libjpeg_turbo\simd_asm.lib" "..\libyuv_sdk\Release_x64\lib" /Y

xcopy ".\third_party\libyuv\include" "..\libyuv_sdk\Debug_x86\include" /E /Y
rem xcopy ".\libyuv_sdk\Debug_x86\obj\third_party\libyuv\libyuv_internal.lib" "..\libyuv_sdk\Debug_x86\lib" /Y
rem xcopy ".\libyuv_sdk\Debug_x86\obj\third_party\libjpeg_turbo\libjpeg.lib" "..\libyuv_sdk\Debug_x86\lib" /Y
rem xcopy ".\libyuv_sdk\Debug_x86\obj\third_party\libjpeg_turbo\simd.lib" "..\libyuv_sdk\Debug_x86\lib" /Y
rem xcopy ".\libyuv_sdk\Debug_x86\obj\third_party\libjpeg_turbo\simd_asm.lib" "..\libyuv_sdk\Debug_x86\lib" /Y

xcopy ".\third_party\libyuv\include" "..\libyuv_sdk\Debug_x64\include" /E /Y
rem xcopy ".\libyuv_sdk\Debug_x64\obj\third_party\libyuv\libyuv_internal.lib" "..\libyuv_sdk\Debug_x64\lib" /Y
rem xcopy ".\libyuv_sdk\Debug_x64\obj\third_party\libjpeg_turbo\libjpeg.lib" "..\libyuv_sdk\Debug_x64\lib" /Y
rem xcopy ".\libyuv_sdk\Debug_x64\obj\third_party\libjpeg_turbo\simd.lib" "..\libyuv_sdk\Debug_x64\lib" /Y
rem xcopy ".\libyuv_sdk\Debug_x64\obj\third_party\libjpeg_turbo\simd_asm.lib" "..\libyuv_sdk\Debug_x64\lib" /Y

echo 拷贝完成

pause

:replace_file
setlocal EnableDelayedExpansion    
set "filename=%~1"
set "old_str=%~2"
set "new_str=%~3"
set "path=%~4"
set "file=%path%\%filename%"
set "tempfile=%path%\tempfile.txt"
set "i=1"

for /f "usebackq delims=" %%a in ("%file%") do (
  set "line=%%a"
  if "!line:%old_str%=%new_str%!" neq "!line!" (
    set "line=!line:%old_str%=%new_str%!"
  )
  >>"%tempfile%" echo.!line!
)

move /y "%tempfile%" "%file%" >nul

goto :eof

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值