引言本文旨在阐述 C++ 第三方库的编译与使用,具体参考了 B 站大佬 无限十三年 的视频:CMake 开源库的编译与使用
一.在 Windows 系统上编译与使用第三方库使用 CMake 管理与编译 C++ 第三方库的流程包含两个方面,一个是编译库,一个是使用库。
1.编译库下面是编译第三方库的流程图:
flowchart TD
A([Start]) --> B[下载源代码]
B --> C[用 CMake 配置生成项目文件]
C --> D[编译项目代码]
D --> E[安装到指定路径]
E --> F([End])
%% 定义节点样式,例如将为开始和结束节点填充为绿色
classDef startEnd fill:#90EE90
class A,F startEnd
2.使用库下面是使用第三方库的流程图:
flowchart TD
A([Start]) --> B[建立项目并编写代码]
B --> C[编写 CMakeLists.txt 配置第三方库]
C --> D[生成项目]
...
引言根据作者 Github 上描述,此项目是 FluentUI 风格的 Qt-Widget 组件库。可根据自己需要在 Qt-Widget 项目中集成此风格控件。特此学习此项目并分享自己的学习心得。
一.ElaWidgetToolsExample 编译1.1 项目下载进入 Github 找到 LiniYous 大佬的 ElaWidgetTools 项目下载到本地
PS:项目地址:LiniyousElaWidgetTools
进入本地创建一个文件夹克隆工程到本地:
1git clone https://github.com/Liniyous/ElaWidgetTools.git
1.2 编译例程
在 ElaWidgetTools中创建 build 目录。然后打开 CMake(cmake-gui) 导入 CMakeLists.txt ,然后设定输出目录为刚刚创建的 build 目录。
PS:注意修改 ElaWidgetTools 目录下 CMakeLists.txt 下 QT_SDK_DIR 变量目录
导入之后点击 configure 按钮配置 VS 工具集版本和系统位数 ...
全栈即时通讯1.项目描述这是一个全栈聊天项目。前端界面采用 Qt,后端服务采用 C++。
前端界面整体风格类似微信客户端。基于 Qt 实现包含注册,登录,聊天等多个界面,并通过 QSS 样式表优化界面效果,支持账号注册,好友添加,好友聊天等功能。气泡聊天框通过 QListWidget 模块实现好友列表,聊天列表及好友添加列表;通过 QGridLayout 和 QPainter 模块实现聊天气泡框;通过 QNetwork 模块实现 HTTP 和 TCP 服务。
后端服务器采取分布式设计,包含 GateServer 网关服务,VerifyServer 验证服务,StatusServer 状态服务以及多个 ChatServer 聊天服务。
后端服务器各服务间通过 grpc 通信。GateServer 网关对外采用 HTTP 服务,负责处理用户登录和注册功能。登录时 GateServer 从 StatusServer 查询聊天服务负载均衡,ChatServer 聊天服务则采用 Asio 实现 TCP 可靠长链接异步通信和转发, 采用多线程模式封装 iocontext 池提升并发性能。数据存储采 ...
前言本安装教程是根据 ArchWiki—安装指南 、 Archlinux安装与美化全流程 以及笔者多次试验总结而成。如有遗漏或者错误请多指正。
一.准备工作1.1 写入软件当前市面上有许多U盘烧录工具,如Rufus、USBWriter、Ventoy等。笔者在这里强烈建议使用 Ventoy ,它是由国人制作的一款完全免费的开源工具,可以非常简单地部署启动镜像。在此贴上链接:Ventoy官网 。
1.2 镜像文件当今网络非常发达,想要获取资源也有多个途径。简单给出镜像获取的两种途径:
Arch Linux 官方网站下载 ISO 文件:Arch Linux Downloads
国内镜像仓库下载系统 ISO 文件:清华源、阿里云源
注:
由于 Arch Linux 系统采用的是滚动更新模式,因此在安装系统时更推荐选取最新的系统镜像。
1.3 镜像烧录笔者使用 Ventoy 软件进行烧录。具体步骤如下:
在 Windows 系统环境下打开 Ventoy 软件,将分区类型选择为 GPT 格式
将 Ventoy 软件安装到 U 盘中
...
一.双系统时区问题1.1 问题描述当安装了 Windows 和 Manjaro 双系统后,发现出现了 Windows 系统时间比 Manjaro 系统时间慢 8 小时的情况。
1.2 问题分析在电脑中会有两个时间,一个是硬件时间,一个是系统时间。
硬件时间:这个时间信息存储在电脑主板中,因此没有夏令时以及时区等概念。
系统时间:这个时间信息由系统管理,通常是通过网络时间同步(Network Time Synchronization,NTS),有夏令时以及时区等概念。
注:
系统时间提供了两种管理思路:
localtime:本地时间,Windows 系统采用此种方法。
UTC:世界标准时间,在众多 Linux 系统中广泛使用。这种方法只需将 UTC 时间加减时区便得到本地时间。
Linux 认为硬件时间是 UTC 标准时间,Linux 时间同步后会把“正确”的时间做减 8 操作作为标准 UTC 标准时间写入主板。
Windows 系统会认为硬件时间就是本地时间,所以直接把主板中的时间信息拿来当做当前的时间。设置或同步时间后也会把“正确”时间写入主板。
这样操作就会出现双系统 ...
引言Linux 系统有着众多特点,而灵活性便是其中之一。而这一灵活性的具体体现就是软件的安装是可以通过多种方法途径来实现的。因此,掌握多种 Linux 系统上软件安装方法便是一个开发者以及爱好者的必备技能。本文以下部分将阐述笔者所了解掌握的几种 Linux 系统安装软件的方法。当然,这几种方法主要是 Arch 系发行版的 Linux 系统。
一.通过 pacman 命令安装pacman 软件包管理器是 Arch Linux 的一大亮点。它将一个简单的 二进制包格式和易用的 构建系统 结合了起来。pacman 的目标是简化对软件包的管理,无论软件包是来自 官方软件仓库 还是 用户自己创建的软件包。
关于 pacman 命令的部分用法将在下面几节详细介绍。如果想查看更加完整的技术文档,可参考:ArchWiki—Pacman(英文完整版) , ArchWiki—Pacman(中文)。
注:
pacman 软件包管理器拥有很强的管理能力。使用软件包而不是自己编译和安装程序有很多好处:
轻松升级:pacman 会在更新可用时立即更新已安装的软件包
依赖检查:pacman 会为你处理依赖问 ...
前言Manjaro 是一个 Arch Linux 的发行版本
来自 Manjaro 社区的官方介绍:
Manjaro is a versatile, free, and open-source Linux operating system designed with a strong focus on safeguarding user privacy and offering extensive control over hardware. This user-friendly OS is an excellent choice for those who seek a fresh computing experience, as it can be seamlessly installed on a diverse array of devices. With support for both x86-64 and ARM architectures, Manjaro stands as an ideal option for any device or computing en ...
引言在 Manjaro 系统日常使用中,有的软件点击率和使用率更高,因此这就需要使用更方便的访问方式,而桌面图标就能满足这一需求。在 Windows 系统中可直接将可执行程序(EXE程序)以创建快捷链接的方式实现桌面访问,而 Linux 系统需要自己创建 desktop 文件并修改相应键值对来达到桌面访问的目的。本文以下部分将阐述具体的实现方式。
一.了解 desktop 文件为了描述如何启动特定程序、如何在菜单中显示等功能,采用配置文件的方式写入相关信息可大大简化维护的时间成本。 Desktop Entry 配置文件就是在这样的背景下应运而生的,像诸如 KDE 、 GNOME 等桌面环境都采用了这一方式。
1.1 编写说明desktop 文件有诸多语法规则和编写相关的配置操作。部分细节如下所示,更加完整的规则可参阅文档: Desktop Entry Specification
Desktop Entry 文件采用 UTF-8 编码。
Desktop Entry 文件命名采用 .desktop 后缀
使用 # 号书写备注信息
此文件所有内容采用 键值对 格式书写
关键字可 ...
常用 Linux 命令一.目录操作1.1 基本命令123456pwd # 查看当前⼯作⽬录clear # 清除屏幕cd ~ # 当前⽤户⽬录cd / # 根⽬录cd - # 上⼀次访问的⽬录cd .. # 上⼀级⽬录
1.2 查看目录内信息1ll # 查看当前⽬录下内容(LL的⼩写)
1.3 创建目录1234mkdir aaa # 在当前⽬录下创建aaa⽬录,相对路径;mkdir ./bbb # 在当前⽬录下创建bbb⽬录,相对路径;mkdir /ccc # 在根⽬录下创建ccc⽬录,绝对路径;mkdir -p temp/nginx # 递归创建目录(会创建⾥⾯没有的⽬录⽂件夹)
1.4 搜索命令12find / -name 'b' # 查询根⽬录下(包括⼦⽬录),名以b的⽬录和⽂件;find / -name 'b*' # 查询根⽬录下(包括⼦⽬录),名以b开头的⽬录和⽂件;
1.5 重命名1mv 原先⽬录 ⽂件的名称 # 举例:mv tomcat001 tomcat
1.6 剪切命令
有 ...










