当前位置: 首页 > news >正文

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池的详细过程 首先&#xf…...

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"#">看不清&#xff0c;换一张</a> </div> 后台代码: /*获取动态验证码*/ ResponseBody RequestMapping(value "/…...

常见的HTTP接口超时问题出现原因及解决办法

HTTP接口超时问题是指在HTTP请求发送到服务器后&#xff0c;由于等待服务器响应的时间超过了预设的超时时间&#xff0c;导致请求被中断。以下是可能导致HTTP接口超时问题的原因和解决方法&#xff1a; 网络延迟或不稳定&#xff1a;网络延迟或不稳定可能导致请求在传输过程中…...

Pandas实战100例 | 案例 54: 日期时间运算

案例 54: 日期时间运算 知识点讲解 当处理带有 datetime 类型数据的 DataFrame 时&#xff0c;Pandas 提供了多种方法来提取和计算日期时间组件。这包括提取年份、月份、日期、星期几以及小时等。 提取日期时间组件: 使用 .dt 访问器&#xff0c;可以从 datetime 类型的列中…...

SDL2 连续帧图像显示

QT使用SDL多窗口显示视频&#xff08;linux&#xff0c;ubuntu&#xff09;_linux qt sdl-CSDN博客 QT使用SDL播放YUV视频 - C - QT C 使用SDL显示RGB图像数据_c sdl-CSDN博客 SDL库入门&#xff1a;掌握跨平台游戏开发和多媒体编程_sdl开发-CSDN博客 SDL教程零基础入门 简单…...

回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测(SE注意力机制)

回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测&#xff08;SE注意力机制&#xff09; 目录 回归预测 | MATLAB实现SSA-CNN-GRU-Attention多变量回归预测&#xff08;SE注意力机制&#xff09;预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SSA…...

使用composer构建软件包时文件(夹)权限设置

在构建软件包的时候你可能会需要对包源内文件或文件夹的权限做出相应的调整&#xff0c;以确保软件包在部署到客户端后可以正常运行。在此之前我们先来了解一下Apple文件系统内文件或文件夹的权限设定。 常见的文件或文件夹会有Owner, Group, Everyone这三种类型的所有权&#…...

【C#】面向对象的三大特性,还记得吗,简单代码举例回顾

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…...

235.【2023年华为OD机试真题(C卷)】机器人搬砖(二分查找-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…...

git hooks

介绍 当我们在执行git管理仓库代码时&#xff0c;想规范下每个用户的commit内容&#xff1f;想检查下提交的代码规范&#xff1f;想检查下PR是否通过&#xff0c;那么这个时候就需要用到git hooks&#xff0c;git hooks可以在我们进行git操作的关键时机插入我们想要执行的“脚…...

法规更新美国玩具标准ASTM F963-17有更新,最新标准为ASTM F963-23

美国材料试验协会 (ASTM)在10月13日发布了新的玩具安全标准&#xff1a;ASTM F963-23&#xff0c;ASTM F963-17美国联邦法规16 CFR 1250还在使用当中&#xff0c;出口美国的玩具的厂商要引起重视。 ASTM F963-17是什么标准&#xff1f; ASTM F963-17是美国玩具检测标准&#…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...