Consolexin's blog Consolexin's blog
首页
  • 算法基础

    • 图论
    • 字符串
    • 动态规划
    • 二分
    • 滑动窗口
    • 排序
  • Project

    • CppServer
  • 相关书籍

    • 现代C++编程
  • 书籍

    • SQL必知必会
    • MySQL必知必会
分类
标签
归档
GitHub (opens new window)

Consolexinhun

小学生
首页
  • 算法基础

    • 图论
    • 字符串
    • 动态规划
    • 二分
    • 滑动窗口
    • 排序
  • Project

    • CppServer
  • 相关书籍

    • 现代C++编程
  • 书籍

    • SQL必知必会
    • MySQL必知必会
分类
标签
归档
GitHub (opens new window)
  • README
  • day01-从一个最简单的socket开始
  • day02-不要放过任何一个错误
  • day03-高并发还得用epoll
  • day04-来看看我们的第一个类
  • day05-epoll高级用法-Channel登场
  • day06-服务器与事件驱动核心类登场
  • day07-为我们的服务器添加一个Acceptor
  • day08-一切皆是类,连TCP连接也不例外
  • day09-缓冲区-大作用
  • day10-加入线程池到服务器
  • day11-完善线程池,加入一个简单的测试程序
  • day12-将服务器改写为主从Reactor多线程模式
  • day13-支持业务逻辑自定义、完善Connection类
  • day14-重构核心库、使用智能指针
  • day15-重构Connection、修改生命周期
  • day16-使用CMake工程化
  • day17-使用EventLoopThreadPool、移交EventLoop
  • day18-HTTP有限状态转换机
  • day19-创建HTTP响应,实现HTTP服务器
  • day20-定时器的创建使用
  • day21-服务器主动关闭连接
  • day22-初步涉及日志库,定义自己的输出流LogStream
  • day23-定义前端日志库,实现同步输出
  • day24-异步日志库
  • day25-更有效的缓冲区
  • day26-监听写事件
  • day27-处理静态文件,实现POST请求
  • day28-文件服务器的简单实现,文件的展示和下载
  • day29-文件的上传
  • day30-WebBench的测试
  • CppServer
consolexinhun
2025-04-20

day16-使用CMake工程化

# day16-使用CMake工程化

最开始只想实现功能,而忽视其他,但是随着文件越来越多,项目的管理就愈加繁杂,例如common.h与tcp并没有关系,因此,想要将其分离,最终还是编写了简单的CMakeLists.txt进行管理

在当前的版本中,一共主要有两个文件夹,base文件夹存放基础的组件,tcp存放TCP的地层文件

include_directories(
    base
    tcp
)
1
2
3
4

在编译,可以根据不同的环境设置不同的编译参数:

SET(CMAKE_CXX_FLAGS "-g -Wall -Werror -std=c++14")
set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_CXX_FLAGS_DEBUG "-O0")
1
2
3

最后我们只需要收集对应目录下的所有源文件并编译连接即可,最后

# 查找包
find_package(Threads REQUIRED)

aux_source_directory(base SRC_LIST1)
aux_source_directory(tcp SRC_LIST2)

set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/test/)

# 指定生成目标
add_executable(echoserver test/echo_server.cpp ${SRC_LIST1} ${SRC_LIST2})

# 添加连接库 主要针对多线程
target_link_libraries(echoserver ${CMAKE_THREAD_LIBS_INIT})
1
2
3
4
5
6
7
8
9
10
11
12
13

配置好CMakeLists.txt之后,就可以尝试编译项目,首先创建build文件夹,防止文件和项目混在一起。

mkdir build
cd build
1
2

然后使用cmake生成Makefile:

cmake ..
1

然后使用make指令即可生成对应的可执行文件

make
1

生成的可知性文件被放在build/test中,只需要使用./test/echoerver即可运行服务器

这是一个非常简单的CMakeLists.txt,只是保证了当前项目可以运行起来,如果需要更加复杂的变化,就需要学习相关的代码,并查阅相应的资料了

编辑 (opens new window)
上次更新: 2025/05/21, 06:42:57
day15-重构Connection、修改生命周期
day17-使用EventLoopThreadPool、移交EventLoop

← day15-重构Connection、修改生命周期 day17-使用EventLoopThreadPool、移交EventLoop→

最近更新
01
6-其他操作
05-20
02
4-联结
05-20
03
7-管理
05-20
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Consolexinhun | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×