Qt6.5.2+WebRTC学习笔记(十三)开发环境搭建(macOS13.5)

前言

在ubuntu和win10开发测试一段时间了,但总在存在平台特性的问题,所以准备将程序移植到macOS上测试,同步进行三个主要桌面系统开发,本教程记录下环境搭建过程

一、准备

1.操作系统macOS13.5 64位 x86架构(建议系统更新到最新,条件所限,无M2的设备)

2.安装Xcode12或更高版本(安装完成后,记得至少运行一次)

3.合理的上网方式,需要正常访问google,最好有30G以上流量,可以通过如下命令验证下

curl ipinfo.io

4.安装git,并设置代理

#全局代理
git config --global http.proxy  http://127.0.0.1:7890
git config --global https.proxy  http://127.0.0.1:7890

//查看当前设置
//git config -l
//取消全局代理
//git config --global --unset http.proxy
//git config --global --unset https.proxy

5.升级python

系统中本来就有python3.9,笔者直接在官网上下载的python3.11.4,安装完成后,需要运行下Python 3.11目录下的Install Certificates.command,对应命令如下

//Python 3.11% 
./Install\ Certificates.command

//要注意下,文件名中间有个空格

6.安装depot_tools

depot_tools是包含下载、编译的相关工具,需要先下载并配置它,才能继续后面的操作。

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

或者直接下载https://storage.googleapis.com/chrome-infra/depot_tools.zip
下载完后解压,并将解压好的depot_tools目录添加到PATH系统环境变量中

二、获取源码

1.打开shell,切换到一个空目录中(目前不要有空格或中文)

2.在终端中设置临时环境变量,以下是笔者设置的,可参考下

//设置临时系统环境变量,仅限此终端使用
export PATH={dir}/webrtc/depot_tools:$PATH

//查看可以使用如下命令
env

3.获取WebRTC源码

mkdir webrtc #这是创建一个目录,当然也可以用鼠标创建。
cd webrtc #进入到我们刚刚创建的目录中
gclient config --name src https://webrtc.googlesource.com/src
fetch --nohooks webrtc #获取代码,这一步会花点时间,一般会失败,我试了几次都失败了
gclient sync # 当过程中断时(包括上一步的失败),我们可以使用该命令恢复并继续

可能需要执行gclient sync ,直到出现如下提示,才代表同步成功

 

笔者下载了40多G数据

4.编译

cd src
gn gen out/Default --ide="qtcreator"
ninja -C out/Default

gn gen out/Release --ide="qtcreator" --args="is_debug=false"
ninja -C out/Release

如提示缺少文件则回到上一步继续执行 gclient sync 同步文件

若一切顺利,会出现类似如下图所示

WebRTC编译后会在src/out/Default/obj和src/out/Release/obj目录下生成整个WebRTC工程的静态库:libwebrtc.a,链接下这个就可以了。

整个目录太大,不方便上传,

后记:

很多小伙伴,想需要查看下,有哪些参数可以设置,可以使用如下命令查看

gn args  out/Default --list

此命令需要提前执行下 gn gen out/Default才能使用

可以根据实际需要调整编译参数

若只想查看特定设置参数,可以使用类似如下命令

gn args  out/Default --list=rtc_enable_grpc

笔者是2023.07.29,拉取的最新代码,总体编译过程是比较顺利的,全部一次通过,但对应目录中却没有生成示例,等后面移植时,再看看具体情况

因笔者只有一台MacBook-Pro(2019年购买),目前屏已坏,只能外接显示器,无法对本机键盘进行测试(外接显示器需要合上盖子);无M2设备,若有相关设备的小伙伴,希望测试后向笔者反馈下

因时间、设备所限,笔者当前也没有国产系统(特别是arm的)、Android、IOS、Web,只能往后排期了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/50161.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python多线程

目录 一.多线程的定义 A.什么是多线程? B.多线程如今遇到的挑战 C.总结 二.python中的多线程 A.python中的多线程底层原理: B.全局解释器锁导致python多线程不能实现真正的并行执行! C.总结应用场景 三.java多线程,以及…

每日一题——删除有序数组中的重复项

删除有序数组中的重复项 题目链接 注:本题所采用的方法是建立在移除元素的基础之上的,如果大家对双指针的方法不大了解,或者不会做《移除元素》这一题,建议先去看看👉传送门 具体步骤 定义两个指针slow和fast&#…

如何在3ds max中创建可用于真人场景的巨型机器人:第 2 部分

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 创建主体 步骤 1 打开 3ds Max。选择机器人头部后,二次单击鼠标并选择隐藏未选中。机器人的其他部分 除了头部之外,将被隐藏。 打开 3ds Max 步骤 2 在人脸选择模式下&#x…

使用 Logstash 及 enrich processor 实现数据丰富自动化

在我之前的文章: Elasticsearch:enrich processor (7.5发行版新功能) Elasticsearch:使用 Elasticsearch ingest pipeline 丰富数据 通过上面的两篇文章的介绍,我们应该充分掌握了如何使用 enrich proce…

深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析

在 Elasticsearch 中,function_score 可以让我们在查询的同时对搜索结果进行自定义评分。 function_score 提供了一系列的参数和函数让我们可以根据需求灵活地进行设置。 近期有同学反馈,function_score 的相关参数不好理解,本文将深入探讨 f…

重排链表——力扣143

文章目录 题目描述法一:寻找链表中点、链表逆序、链表合并 题目描述 法一:寻找链表中点、链表逆序、链表合并 void reorderList(ListNode* head){if(headnullptr){return;}// 找到中点 ListNode* mid FindMiddle(head);ListNode *h1head, *h2mid->ne…

tinkerCAD案例:22. Backpack Zipper Pull 背包拉链头

tinkerCAD案例:21. Custom Stamp 定制印章 原文 tinkerCAD案例:22. Backpack Zipper Pull 背包拉链头 Lesson Overview: 课程概述: Now we’re going to make a zipper pull! 现在我们要做一个拉链头! Your backpack, howev…

金融行业软件测试面试题及其答案

下面是一些常见的金融行业软件测试面试题及其答案: 1. 什么是金融行业软件测试? 金融行业软件测试是针对金融领域的软件系统进行验证和确认的过程,旨在确保软件在安全、稳定、可靠和符合法规要求的条件下运行。 2. 解释一下金融软件中的风险…

代码随想录算法训练营day15 | 102. 二叉树的层序遍历,226. 翻转二叉树,101. 对称二叉树

目录 102. 二叉树的层序遍历 226. 翻转二叉树 101. 对称二叉树 100. 相同的树 100是101的衍生题目。572也为101的衍生题目。 102. 二叉树的层序遍历 思路&#xff1a; 以前的笔记 代码&#xff1a; class Solution {public List<List<Integer>> levelOrder(T…

卸载大脑,相信DFS

切莫相信动规&#xff0c;吾将为您指明前进之路 印子 比赛时&#xff0c;你是否有这样的经历&#xff1a;不敢用for暴搜&#xff0c;又不会用数学公式推理&#xff1b;焦急地在纸上打草&#xff0c;却没有优化思路&#xff1b;明明比赛前一天晚上背了那么多模板却脑子一片空白…

生成模型和判别模型工作原理介绍

您解决的大多数机器学习和深度学习问题都是从生成模型和判别模型中概念化的。在机器学习中,人们可以清楚地区分两种建模类型: 将图像分类为狗或猫属于判别性建模生成逼真的狗或猫图像是一个生成建模问题神经网络被采用得越多,生成域和判别域就增长得越多。要理解基于这些模型…

Python Web开发技巧VIII

目录 ModelSerializer和Serializer区别是什么 从queryset中取出某个models的字段值 Q对象进行模糊匹配 HTTP方式-如何模糊搜索JSON字段中的某个KEY值呢&#xff1f; showmigrations 合并两个或多个queryset ModelSerializer和Serializer区别是什么 都是DRF中用于序列化和…

QT【day3】

思维导图&#xff1a; 闹钟&#xff1a; //widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> // #include<QTime> //定时器 #include<QDebug> // #in…

力扣算法数学类—剑指 Offer 43. 1~n 整数中 1 出现的次数

目录 剑指 Offer 43. 1&#xff5e;n 整数中 1 出现的次数 题解&#xff1a; 代码&#xff1a; 结果&#xff1a; 输入一个整数 n &#xff0c;求1&#xff5e;n这n个整数的十进制表示中1出现的次数。 例如&#xff0c;输入12&#xff0c;1&#xff5e;12这些整数中包含1 的…

【雕爷学编程】MicroPython动手做(10)——零基础学MaixPy之神经网络KPU

早上百度搜“神经网络KPU”&#xff0c;查到与非网的一篇文章《一文读懂APU/BPU/CPU/DPU/EPU/FPU/GPU等处理器》&#xff0c;介绍各种处理器非常详细&#xff0c;关于“KPU”的内容如下&#xff1a; KPU Knowledge Processing Unit。 嘉楠耘智&#xff08;canaan&#xff09;号…

web流程自动化详解

今天给大家带来Selenium的相关解释操作 一、Selenium Selenium是一个用于自动化Web浏览器操作的开源工具和框架。它提供了一组API&#xff08;应用程序接口&#xff09;&#xff0c;可以让开发人员使用多种编程语言&#xff08;如Java、Python、C#等&#xff09;编写测试脚本&…

PS软件打开闪退是什么原因?怎么处理闪退的问题?

Photoshop简称PS&#xff0c;它作为图像处理专家&#xff0c;具有相当强大的功能&#xff0c;但是有小伙伴说不好用&#xff0c;因为打开后会闪退&#xff0c;那该怎么办呢&#xff1f; PS软件闪退的处理方法&#xff1a; 1.下载并安装Adobe Creative Cloud&#xff0c;再登录…

Vue3 word如何转成pdf代码实现

&#x1f642;博主&#xff1a;锅盖哒 &#x1f642;文章核心&#xff1a;word如何转换pdf 目录 1.前端部分 2.后端部分 在Vue 3中&#xff0c;前端无法直接将Word文档转换为PDF&#xff0c;因为Word文档的解析和PDF的生成通常需要在后端进行。但是&#xff0c;你可以通过Vu…

output delay 约束

output delay 约束 一、output delay约束概述二、output delay约束系统同步三、output delay约束源同步 一、output delay约束概述 特别注意&#xff1a;在源同步接口中&#xff0c;定义接口约束之前&#xff0c;需要用create_generated_clock 先定义送出的随路时钟。 二、out…

汽车交流充电桩控制主板的电路设计

汽车充电桩控制主板的电路设计 你是否曾经遇到过汽车没油的问题?但是&#xff0c;随着电动汽车的普及&#xff0c;充电问题也变得越来越重要。而汽车充电桩控制板电路设计则是解决这一问题的关键。 汽车充电桩控制板电路设计包括硬件电路设计、软件电路设计和安全性设计。硬件…