该方法的使用前提是你得有一个已经成功编译过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
573

被折叠的 条评论
为什么被折叠?



