1. depot_tools
cd /Users/works/node-webrtc/build-darwin-arm64/external/libwebrtc/download/src
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=/Users/works/node-webrtc/build-darwin-arm64/external/libwebrtc/download/depot_tools:$PATH
export DEPOT_TOOLS_UPDATE=0
2. gclient文件创建
solutions = [
{
"name": "src",
"url": "https://webrtc.googlesource.com/src.git@refs/remotes/branch-heads/6478",
"deps_file": "DEPS",
"managed": False,
"custom_deps": {},
},
]
target_os = ['mac']
gclient sync
3. gn gen and ninja
###m98
gn gen out/mac-arm64/Release --args=' target_os="mac" use_custom_libcxx=true is_component_build=false rtc_build_examples=false rtc_include_tests=false is_debug=false target_cpu="arm64" rtc_libvpx_build_vp9=false rtc_enable_protobuf=false rtc_include_internal_audio_device=true enable_dsyms=true enable_stripping=true rtc_use_h264=true ffmpeg_branding="Chrome" mac_sdk_path="/Users/works/electron/MacOSX14.0.sdk" ' --ide=xcode
ninja -C out/mac-arm64/Release webrtc
gn gen out/mac-arm64/Debug --args=' target_os="mac" use_custom_libcxx=true is_component_build=false rtc_build_examples=false rtc_include_tests=false is_debug=true target_cpu="arm64" rtc_libvpx_build_vp9=false rtc_enable_protobuf=false rtc_include_internal_audio_device=true enable_dsyms=true enable_stripping=true rtc_use_h264=true ffmpeg_branding="Chrome" mac_sdk_path="/Users/works/electron/MacOSX14.0.sdk" ' --ide=xcode
ninja -C out/mac-arm64/Debug webrtc
###m126
gn gen out/mac-arm64/Release --args=' target_os="mac" use_rtti=true use_custom_libcxx=false is_component_build=false rtc_build_examples=false rtc_include_tests=false is_debug=false target_cpu="arm64" rtc_libvpx_build_vp9=false rtc_enable_protobuf=false rtc_include_internal_audio_device=true enable_dsyms=true enable_stripping=true proprietary_codecs=true rtc_use_h264=true ffmpeg_branding="Chrome" mac_sdk_path="/Users/works/electron/MacOSX14.0.sdk" ' --ide=xcode
ninja -C out/mac-arm64/Release webrtc
gn gen out/mac-arm64/Debug --args=' target_os="mac" use_rtti=true use_custom_libcxx=false is_component_build=false rtc_build_examples=false rtc_include_tests=false is_debug=true target_cpu="arm64" rtc_libvpx_build_vp9=false rtc_enable_protobuf=false rtc_include_internal_audio_device=true enable_dsyms=true enable_stripping=true proprietary_codecs=true rtc_use_h264=true ffmpeg_branding="Chrome" mac_sdk_path="/Users/works/electron/MacOSX14.0.sdk" ' --ide=xcode
ninja -C out/mac-arm64/Debug webrtc
4.修改CMakeLists.txt
ExternalProject_Add(
project_libwebrtc
PREFIX ${CMAKE_BINARY_DIR}/external/libwebrtc/prefix
TMP_DIR ${CMAKE_BINARY_DIR}/external/libwebrtc/tmp
STAMP_DIR ${CMAKE_BINARY_DIR}/external/libwebrtc/stamp
DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/external/libwebrtc/download
SOURCE_DIR ${CMAKE_BINARY_DIR}/external/libwebrtc/download/src
BINARY_DIR ${CMAKE_BINARY_DIR}/external/libwebrtc/build/${CMAKE_BUILD_TYPE}
BUILD_BYPRODUCTS ${byproducts}
#DOWNLOAD_COMMAND ${CMAKE_COMMAND} -E env DEPOT_TOOLS=${depot_tools_install_dir} PLATFORM=${PLATFORM} WEBRTC_REVISION=${WEBRTC_REVISION} ${CMAKE_SOURCE_DIR}/scripts/download-webrtc.${suffix}
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env BINARY_DIR=<BINARY_DIR> DEPOT_TOOLS=${depot_tools_install_dir} GN_GEN_ARGS=${GN_GEN_ARGS} SOURCE_DIR=<SOURCE_DIR> ${CMAKE_SOURCE_DIR}/scripts/configure-webrtc.${suffix}
BUILD_COMMAND ${CMAKE_COMMAND} -E env CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} DEPOT_TOOLS=${depot_tools_install_dir} ${CMAKE_SOURCE_DIR}/scripts/build-webrtc.${suffix}
INSTALL_COMMAND ""
)
跳过 scripts/build-webrtc.sh
#ninja $TARGETS
跳过 scripts/configure-webrtc.sh
#gn gen ${BINARY_DIR} "--args=${GN_GEN_ARGS} "
#按照步骤3编译
5.cmake-js
npm install cmake-js -g
6. arm64 x64 build-vars.js
#export DEBUG=1
cd /Users/works/node-webrtc
npm run build