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是美国玩具检测标准&#…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
spring Security对RBAC及其ABAC的支持使用
RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...
