CMake TcpServer项目 链接静态库/动态库
一、链接静态库
- 查看项目结构
heheda@linux:~/Linux/LinuxServerCpp-Link$ tree
.
├── CMakeLists.txt
├── include
│ ├── common
│ │ ├── Buffer.h
│ │ ├── Channel.h
│ │ └── Log.h
│ ├── http
│ │ ├── HttpRequest.h
│ │ └── HttpResponse.h
│ ├── reactor
│ │ ├── Dispatcher.h
│ │ ├── EpollDispatcher.h
│ │ ├── EventLoop.h
│ │ ├── PollDispatcher.h
│ │ └── SelectDispatcher.h
│ ├── tcp
│ │ ├── TcpConnection.h
│ │ └── TcpServer.h
│ └── thread
│ ├── ThreadPool.h
│ └── WorkerThread.h
├── main.cpp
├── src
│ ├── common
│ │ ├── Buffer.cpp
│ │ └── Channel.cpp
│ ├── http
│ │ ├── HttpRequest.cpp
│ │ └── HttpResponse.cpp
│ ├── reactor
│ │ ├── Dispatcher.cpp
│ │ ├── EpollDispatcher.cpp
│ │ ├── EventLoop.cpp
│ │ ├── PollDispatcher.cpp
│ │ └── SelectDispatcher.cpp
│ ├── tcp
│ │ ├── TcpConnection.cpp
│ │ └── TcpServer.cpp
│ └── thread
│ ├── ThreadPool.cpp
│ └── WorkerThread.cpp
└── staticLib├── libcommon.a├── libhttp.a├── libreactor.a├── libtcp.a└── libthread.a13 directories, 34 files
heheda@linux:~/Linux/LinuxServerCpp-Link$

- CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(HttpWeb)# 库生成的路径
set(LIBPATH ${PROJECT_SOURCE_DIR}/staticLib)#包含头文件 注意:PROJECT_SOURCE_DIR 或 CMAKE_CURRENT_SOURCE_DIR
set(INCLUDE ${PROJECT_SOURCE_DIR}/include)
include_directories(${INCLUDE}/common)
include_directories(${INCLUDE}/http)
include_directories(${INCLUDE}/reactor)
include_directories(${INCLUDE}/tcp)
include_directories(${INCLUDE}/thread)file(GLOB SRC_LIST ${CMAKE_CURRENT_LIST_DIR}/src/*/*.cpp)
# 包含静态库路径
link_directories(${LIBPATH})# 链接静态库, calc为静态库的名字
link_libraries(common http reactor tcp thread -lpthread)
add_executable(server main.cpp ${SRC_LIST})
# target_link_libraries(server common http reactor tcp thread -lpthread)# 指定输出的路径
set(HOME ${PROJECT_SOURCE_DIR}) # 定义一个变量用于存储一个绝对路径
set(EXECUTABLE_OUTPUT_PATH ${HOME}/bin) # 将拼接好的路径值设置给 EXECUTABLE_OUTPUT_PATH 变量
- 执行命令和结果:
heheda@linux:~/Linux/LinuxServerCpp-Link$ mkdir build
heheda@linux:~/Linux/LinuxServerCpp-Link$ cd build/
heheda@linux:~/Linux/LinuxServerCpp-Link/build$ cmake ..
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/heheda/Linux/LinuxServerCpp-Link/build
heheda@linux:~/Linux/LinuxServerCpp-Link/build$ make
Scanning dependencies of target server
[ 6%] Building CXX object CMakeFiles/server.dir/main.cpp.o
[ 13%] Building CXX object CMakeFiles/server.dir/src/common/Buffer.cpp.o
[ 20%] Building CXX object CMakeFiles/server.dir/src/common/Channel.cpp.o
[ 26%] Building CXX object CMakeFiles/server.dir/src/http/HttpRequest.cpp.o
[ 33%] Building CXX object CMakeFiles/server.dir/src/http/HttpResponse.cpp.o
[ 40%] Building CXX object CMakeFiles/server.dir/src/reactor/Dispatcher.cpp.o
[ 46%] Building CXX object CMakeFiles/server.dir/src/reactor/EpollDispatcher.cpp.o
[ 53%] Building CXX object CMakeFiles/server.dir/src/reactor/EventLoop.cpp.o
[ 60%] Building CXX object CMakeFiles/server.dir/src/reactor/PollDispatcher.cpp.o
[ 66%] Building CXX object CMakeFiles/server.dir/src/reactor/SelectDispatcher.cpp.o
[ 73%] Building CXX object CMakeFiles/server.dir/src/tcp/TcpConnection.cpp.o
[ 80%] Building CXX object CMakeFiles/server.dir/src/tcp/TcpServer.cpp.o
[ 86%] Building CXX object CMakeFiles/server.dir/src/thread/ThreadPool.cpp.o
[ 93%] Building CXX object CMakeFiles/server.dir/src/thread/WorkerThread.cpp.o
[100%] Linking CXX executable ../bin/server
[100%] Built target server
heheda@linux:~/Linux/LinuxServerCpp-Link/build$ cd ../bin
heheda@linux:~/Linux/LinuxServerCpp-Link/bin$ ./server
DEBUG: /home/heheda/Linux/LinuxServerCpp-Link/src/tcp/TcpServer.cpp@run, line: 66
***LogInfo[服务器程序已经启动了...]

二、链接动态库
- 查看项目结构
heheda@linux:~/Linux/LinuxServerCpp-Link$ tree
.
├── CMakeLists.txt
├── include
│ ├── common
│ │ ├── Buffer.h
│ │ ├── Channel.h
│ │ └── Log.h
│ ├── http
│ │ ├── HttpRequest.h
│ │ └── HttpResponse.h
│ ├── reactor
│ │ ├── Dispatcher.h
│ │ ├── EpollDispatcher.h
│ │ ├── EventLoop.h
│ │ ├── PollDispatcher.h
│ │ └── SelectDispatcher.h
│ ├── tcp
│ │ ├── TcpConnection.h
│ │ └── TcpServer.h
│ └── thread
│ ├── ThreadPool.h
│ └── WorkerThread.h
├── main.cpp
└── sharedLib├── libcommon.so├── libhttp.so├── libreactor.so├── libtcp.so└── libthread.so7 directories, 21 files
heheda@linux:~/Linux/LinuxServerCpp-Link$

CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(HttpWeb)# 库生成的路径
set(LIBPATH ${PROJECT_SOURCE_DIR}/sharedLib)#包含头文件 注意:PROJECT_SOURCE_DIR 或 CMAKE_CURRENT_SOURCE_DIR
set(INCLUDE ${PROJECT_SOURCE_DIR}/include)
include_directories(${INCLUDE}/common)
include_directories(${INCLUDE}/http)
include_directories(${INCLUDE}/reactor)
include_directories(${INCLUDE}/tcp)
include_directories(${INCLUDE}/thread)# link_libraries(common http reactor tcp thread -lpthread)
# link_directories(${LIB_PATH})
# file(GLOB SRC_LIST ${CMAKE_CURRENT_LIST_DIR}/*.cpp)
# 包含静态库路径
# link_directories(${PROJECT_SOURCE_DIR}/lib)
link_directories(${LIBPATH})# 链接静态库, calc为静态库的名字
# link_libraries(server common http reactor tcp thread -lpthread)
# add_executable(server main.cpp ${SRC_LIST})
add_executable(server main.cpp)
target_link_libraries(server common http reactor tcp thread -lpthread)# 指定输出的路径
set(HOME ${PROJECT_SOURCE_DIR}) # 定义一个变量用于存储一个绝对路径
set(EXECUTABLE_OUTPUT_PATH ${HOME}/bin) # 将拼接好的路径值设置给 EXECUTABLE_OUTPUT_PATH 变量
- 执行命令和结果:
heheda@linux:~/Linux/LinuxServerCpp-Link$ mkdir build
heheda@linux:~/Linux/LinuxServerCpp-Link$ cd build/
heheda@linux:~/Linux/LinuxServerCpp-Link/build$ cmake ..
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/heheda/Linux/LinuxServerCpp-Link/build
heheda@linux:~/Linux/LinuxServerCpp-Link/build$ make
Scanning dependencies of target server
[ 50%] Building CXX object CMakeFiles/server.dir/main.cpp.o
[100%] Linking CXX executable ../bin/server
[100%] Built target server
heheda@linux:~/Linux/LinuxServerCpp-Link/build$ cd ../bin
heheda@linux:~/Linux/LinuxServerCpp-Link/bin$ ls
server
heheda@linux:~/Linux/LinuxServerCpp-Link/bin$ ./server
DEBUG: /home/heheda/Linux/LinuxServerCppInclude/tcp/src/TcpServer.cpp@run, line: 66
***LogInfo[服务器程序已经启动了...]

相关文章:
CMake TcpServer项目 链接静态库/动态库
一、链接静态库 查看项目结构 hehedalinux:~/Linux/LinuxServerCpp-Link$ tree . ├── CMakeLists.txt ├── include │ ├── common │ │ ├── Buffer.h │ │ ├── Channel.h │ │ └── Log.h │ ├── http │ │ ├── HttpRequest…...
uint32无符号字节转为Java中的int
文章目录 前言一、无符号字节转为int1.前置知识2.无符号转int代码3.Java中字节转为int 二、字节缓冲流1.基础知识2.String与ByteBuffer转换 总结 前言 Java 中基本类型都是有符号数值,如果接收到了 C/C 处理的无符号数值字节流,将出现转码错误。 提示&a…...
Python网络爬虫进阶:自动切换HTTP代理IP的应用
前言 当你决定做一个网络爬虫的时候,就意味着你要面对一个很大的挑战——IP池和中间件。这两个东西听起来很大上,但其实就是为了让你的爬虫不被封杀了。下面我就来给你讲讲如何搞定这些东西。 第一步:创建爬虫IP池的详细过程 首先…...
vivado 使用IP Integrator源
使用IP Integrator源 在Vivado Design Suite中,您可以在RTL中添加和管理IP子系统块设计(.bd)项目或设计。使用Vivado IP集成程序,您可以创建IP子系统块设计。IP集成程序使您能够通过实例化和将Vivado IP目录中的多个IP核互连。可…...
【Mybatis系列】Mybatis空值关联
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
计算机组成原理 运输层
文章目录 运输层运输层协议概述进程之间的通信运输层的两个主要协议运输层的端口 用户数据报协议 UDPUDP 概述UDP 的首部格式 传输控制协议 TCP 概述TCP 最主要的特点TCP 的连接 可靠传输的工作原理停止等待协议连续 ARQ协议 TCP 报文段的首部格式TCP 可靠传输的实现以字节为单…...
shp文件与数据库(创建shp文件)
前言 前面把shp文件中的内容读取到数据库,接下来就把数据库中的表变成shp文件。 正文 简单的创建一个shp文件 暂时不读取数据库的表,先随机创建一个shp文件。既然是随机的,这就需要使用到faker这个第三方库,代码如下。 impor…...
106、Text-Image Conditioned Diffusion for Consistent Text-to-3D Generation
简介 很多工作在扩散先验中注入跨视图一致性,但仍然缺乏细粒度的视图一致性。论文提出的文本到3d的方法有效地减轻了漂浮物(由于密度过大)和完全空白空间(由于密度不足)的产生。 实现过程 简单而言,论文工作是 DreamfusionZero123。 使用两种不同的分数…...
MAC通过终端,使用python3建立本地Web服务
实现局域网Web服务,很简单几句命令,一起看看。 1. 我相信你已经有 brew(Homebrew 包管理器) 了对么? 如果没有可以执行这个方法 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"2. 安…...
闲鱼宝库亮相!闲鱼商品详情关键词搜索电商API接口助你畅享无尽好货!
随着互联网的快速发展,电商平台的崛起已经改变了人们的购物习惯。而在众多电商平台中,闲鱼作为一款社区二手交易平台,一直备受用户喜爱。如今,闲鱼宝库正式亮相,为用户带来了更加全面、详细的商品详情关键词搜索电商AP…...
后台生成随机验证码验证登录
web get请求获取图片 <div class"p2"><img id"imgId" src"/get/code"><a href"#">看不清,换一张</a> </div> 后台代码: /*获取动态验证码*/ ResponseBody RequestMapping(value "/…...
常见的HTTP接口超时问题出现原因及解决办法
HTTP接口超时问题是指在HTTP请求发送到服务器后,由于等待服务器响应的时间超过了预设的超时时间,导致请求被中断。以下是可能导致HTTP接口超时问题的原因和解决方法: 网络延迟或不稳定:网络延迟或不稳定可能导致请求在传输过程中…...
Pandas实战100例 | 案例 54: 日期时间运算
案例 54: 日期时间运算 知识点讲解 当处理带有 datetime 类型数据的 DataFrame 时,Pandas 提供了多种方法来提取和计算日期时间组件。这包括提取年份、月份、日期、星期几以及小时等。 提取日期时间组件: 使用 .dt 访问器,可以从 datetime 类型的列中…...
SDL2 连续帧图像显示
QT使用SDL多窗口显示视频(linux,ubuntu)_linux qt sdl-CSDN博客 QT使用SDL播放YUV视频 - C - QT C 使用SDL显示RGB图像数据_c sdl-CSDN博客 SDL库入门:掌握跨平台游戏开发和多媒体编程_sdl开发-CSDN博客 SDL教程零基础入门 简单…...
回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制)
回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制) 目录 回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制)预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SSA…...
使用composer构建软件包时文件(夹)权限设置
在构建软件包的时候你可能会需要对包源内文件或文件夹的权限做出相应的调整,以确保软件包在部署到客户端后可以正常运行。在此之前我们先来了解一下Apple文件系统内文件或文件夹的权限设定。 常见的文件或文件夹会有Owner, Group, Everyone这三种类型的所有权&#…...
【C#】面向对象的三大特性,还记得吗,简单代码举例回顾
欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…...
235.【2023年华为OD机试真题(C卷)】机器人搬砖(二分查找-JavaPythonC++JS实现)
🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…...
git hooks
介绍 当我们在执行git管理仓库代码时,想规范下每个用户的commit内容?想检查下提交的代码规范?想检查下PR是否通过,那么这个时候就需要用到git hooks,git hooks可以在我们进行git操作的关键时机插入我们想要执行的“脚…...
法规更新美国玩具标准ASTM F963-17有更新,最新标准为ASTM F963-23
美国材料试验协会 (ASTM)在10月13日发布了新的玩具安全标准:ASTM F963-23,ASTM F963-17美国联邦法规16 CFR 1250还在使用当中,出口美国的玩具的厂商要引起重视。 ASTM F963-17是什么标准? ASTM F963-17是美国玩具检测标准&#…...
OpenClaw多模型切换实战:千问3.5-35B-A3B-FP8与文本模型的协作流程
OpenClaw多模型切换实战:千问3.5-35B-A3B-FP8与文本模型的协作流程 1. 为什么需要多模型协作? 去年我在尝试用AI自动化处理工作流时,发现一个尴尬的问题:当我用同一个模型处理图片识别和文本写作时,要么图片理解能力…...
Shox96 Progmem:嵌入式Flash短字符串高效压缩方案
1. Shox96 Progmem 压缩库技术解析:面向嵌入式 Flash 的短字符串高效压缩方案1.1 工程背景与设计动因在资源受限的嵌入式系统中,Flash 存储空间始终是关键瓶颈。以典型 Cortex-M0/M3 MCU(如 STM32F072、nRF52832)为例,…...
告别重复配置:用快马AI自动化生成规范化的软件安装包项目
今天想和大家分享一个提升开发效率的小技巧——如何用InsCode(快马)平台快速生成规范化的Python安装包项目。作为一个经常需要打包工具给团队使用的开发者,我深刻体会到手动配置各种安装文件的痛苦,直到发现了这个能自动化生成项目骨架的神器。 传统安装…...
避坑指南:WFDB读取ECG数据时,.hea文件真的‘几乎没用’吗?
避坑指南:WFDB读取ECG数据时,.hea文件真的‘几乎没用’吗? 在生物信号处理领域,WFDB(Waveform Database)格式是存储心电图(ECG)数据的黄金标准。许多开发者习惯性地认为.hea头文件只…...
linux——消息队列发送和读取函数
int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); //读取消息,成功返回消息数据的长度,失败返回‐1 参数: msgid:消息队列的ID msgp:指向消息的指针,常用结构体msgbuf如下: struct msgbuf { lon…...
TX12 + ExpressLRS 915MHz RC链路优化与EdgeTX固件升级实战
1. 为什么选择TX12搭配ExpressLRS 915MHz系统 玩无人机的朋友都知道,遥控链路就像风筝线,距离和稳定性直接决定飞行体验。我之前用2.4GHz的RadioLink套装,飞到500米就开始心跳加速——信号时断时续,每次返航都像在赌运气。换成TX1…...
如何用PyFlow创建自定义节点:从函数到可视化组件的完整指南
如何用PyFlow创建自定义节点:从函数到可视化组件的完整指南 【免费下载链接】PyFlow Visual scripting framework for python 项目地址: https://gitcode.com/gh_mirrors/py/PyFlow PyFlow是一款强大的Python可视化脚本框架,它允许开发者通过拖拽…...
我在 Mac 写了个服务,硬要它在 18 岁高龄的 Windows 服务器上跑,结果…
前言 事情是这样的。 我有个朋友(以下称他为"怨种朋友"),找到我说: "帮我写个 Go 服务,在你自己 Mac 上开发,最后要能跑在咱们公司那台快入土的 Windows 2008 服务器上。" 我当时的…...
基于MATLAB的齿轮系统非线性动力学特性分析:参数阻尼比变化调节下的输出结果
基于matlab的齿轮系统非线性动力学特性分析 基于matlab的齿轮系统非线性动力学特性分析,综合考虑齿侧间隙、时变啮合刚度、综合啮合误差等因素下,参数阻尼比变化调节下,输出位移、相图、载荷、频率幅值结果 程序已调通,可直接运行…...
JavaScript基础课程二、学习JavaScript路线图
JavaScript 全栈学习路线 JavaScript 基础→进阶→高级→跨平台实战 这是一套零基础可入门、循序渐进、覆盖全场景的 JavaScript 学习路线,包含学习重点、实战项目、工具资源和避坑指南,学完可独立开发网页、小程序、APP、桌面软件、后端服务。 一、先搞懂:JavaScript 到…...
