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

news2024/9/29 5:36:45

前言

在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,只能往后排期了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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…

【TypeScript】TS入门级基础学习(一)

【TypeScript】TS入门级基础学习(一) 一、前言 TypeScript 是一种用于应用程序规模的 JavaScript 语言。 TypeScript 向 JavaScript 添加了可选类型,支持用于任何浏览器、任何主机、任何操作系统的大规模 JavaScript 应用程序的工具。 Type…

【简历完善】- SLAM - 第一篇:卡尔曼滤波的学习

场景:晚上你需要从自己的卧室去上厕所,你知道家里的布局,了解自己的步长,但是没有灯。你如何才能走到厕所呢? 一些术语 “预测” “估计”。下面所说的预测和估计就是一回事。不同博客里面这两个词语大概意思也是一…

如何⾃定义⼀个SpringBoot Srarter

⾃定义⼀个SpringBoot Srarter 1、创建⼀个项⽬,命名为 demo-springboot-starter,引⼊SpringBoot相关依赖 2、编写配置⽂件 定义属性配置的前缀 3、⾃动装配 创建⾃动配置类HelloPropertiesConfigure 4、配置⾃动类 在 /resources/META-INF/spri…

ROS 基础知识汇总

How to learn ROS ROS for Beginners: How to Learn ROS - The Construct ROSwiki 界面介绍 ROS/Tutorials/NavigatingTheWiki - ROS Wiki ROS要学会哪些?如何学习Ros? - 知乎 setup.bash 的作用 ROS中的setup.bash_泠山的博客-CSDN博客 包的层级架构 …

ChatGPT长文本对话输入方法

ChatGPT PROMPTs Splitter 是一个开源工具,旨在帮助你将大量上下文数据分成更小的块发送到 ChatGPT 的提示,并根据如何处理所有块接收到 ChatGPT(或其他具有字符限制的语言模型)的方法。 推荐:用 NSDT设计器 快速搭建可…

如何搭建并部署抖音SEO源代码?

搭建并部署抖音SEO源代码,需要以下步骤: 购买服务器:在云服务商或者VPS提供商购买一台服务器,选择Linux系统。 安装LAMP/LEMP环境:LAMP是指Linux Apache MySQL PHP,LEMP是指Linux Nginx MySQL PHP。…

卷积的意义及其应用

卷积的意义及其应用 卷积的定义 我们将形如 ∫ − ∞ ∞ f ( τ ) g ( x − τ ) d τ \int^\infty_{-\infty} f(τ)g(x-τ)dτ ∫−∞∞​f(τ)g(x−τ)dτ 的式子称之为f(x)与g(x)的卷积记为 h ( x ) ( f ∗ g ) ( x ) h(x…

js开发技巧

1. 初始化数组 如果想要初始化一个指定长度的一维数组,并指定默认值,可以这样: const array Array(6).fill(); // [, , , , , ] 如果想要初始化一个指定长度的二维数组,并指定默认值,可以这样: const…

【尚硅谷】第01章:随堂复习与企业真题(Java语言概述)

来源:尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备) 基本都是宋老师发的资料里面的内容,只不过补充几个资料里没直接给出答案的问题的答案。 不想安装markdown笔记的app所以干脆在这里发一遍。 第01章:随堂复习…

电路原理分析1

d2的作用是提供一个1.25v的电平 r3、r4的作用都是限流 c1是滤波 运放的4、8脚是常规的外围 这个运放是一个运算放大电路 具体计算是这样的: 按照虚短原则,输入的信号Uinu1,输出的信号Uoutu3 按照虚断原则,i1i2i5i5 u1/r2i1i5&#xff…

windows使用多账户Git,多远程仓库版本管理

1 清除全局配置 git config --global --list // 看一下是否配置过user.name 和 user.email git config --global --unset user.name // 清除全局用户名 git config --global --unset user.email // 清除全局邮箱 2 本地仓库,每个远程对应的本地仓库目录下执行 $…

Redis缓存击穿问题以及解决方案

Redis缓存击穿问题以及解决方案 前言一、什么是Redis缓存击穿二、解决方案1.使用锁来解决使用锁的流程:核心思路:思路流程图:操作的锁的代码:业务的实现: 2.逻辑过期来解决思路分析:解决流程:业…

YOLOv5改进系列(17)——更换IoU之MPDIoU(ELSEVIER 2023|超越WIoU、EIoU等|实测涨点)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

【数据结构】_5.栈

目录 1. 概念 2. 栈的使用 2.1 方法 2.2 示例 3. 栈的模拟实现 4. 栈的应用场景 4.1 题目1:不可能的出栈序列 4.2 题目2:逆序打印单链表 4.3 题目3:逆波兰表达式求值 4.4 题目4:括号匹配 4.5 题目5:栈的压入…

如何构建高效的接口自动化测试框架

在选择接口测试自动化框架时,需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说,使用Python相关的测试框架更为便捷。无论选择哪种框架,重要的是确保 框架功能完备,易于维护和扩展,提高测试效率和准确性。今…

最适合新手的SpringBoot+SSM项目《苍穹外卖》实战—(五)员工管理

黑马程序员最新Java项目实战《苍穹外卖》,最适合新手的SpringBootSSM的企业级Java项目实战。 新增员工 设计 DTO 类 我们需要根据新增员工接口设计对应的 DTO 类去接收前端传递的参数,前端传递参数列表如下: 注意: 当前端提交的…

C++ 成员初始化列表和new运算符的应用

输出一个学生的学号&#xff0c;姓名&#xff0c;性别和出生年月日 class Date { public:Date(int y, int m, int d) :m_year(y), m_month(m), m_day(d) {}void Print(){cout << m_year << "/" << m_month << "/" << m_day…

第四章 No.1树状数组的原理与使用

文章目录 应用问题原理树状数组练习题241. 楼兰图腾242. 一个简单的整数问题243. 一个简单的整数问题2244. 谜一样的牛 线段树的反面&#xff1a;树状数组原理复杂&#xff0c;实现简单 应用问题 支持两个操作&#xff1a;快速求前缀和任意地修改某个数&#xff0c;时间复杂度…

520 · 一致性哈希 II

链接&#xff1a;LintCode 炼码 - ChatGPT&#xff01;更高效的学习体验&#xff01; 题解&#xff1a; class Solution{private:int n;const int mVirtualNodeCount;map<int, int> mVirtualNodeToMachineIdMap;set<int> mVirtualNodeSet;public:Solution(int n…