Drogon简介
Drogon是一个基于C++17/20的Http应用框架,专门用于构建高效的Web应用和服务端程序
- 网络层使用基于epoll(macOS/FreeBSD下是kqueue)的非阻塞IO框架,提供高并发、高性能的网络IO。
安装
1 2 3 4 5 6 7 8 9 10 11 12
| #安装依赖(Ubuntu示例) sudo apt install -y gcc g++ cmake libssl-dev libjsoncpp-dev uuid-dev zlib1g-dev #克隆仓库 git clone https://github.com/drogonframework/drogon.git cd drogon git submodule update --init #编译安装(约5-10分钟) mkdir build cd build cmake .. make -j$(nproc) sudo make install
|
引入CMake
由于项目越发复杂,再手动编写makefile过于繁琐,因此开始使用CMkae进行项目构建,并且配合makefile
进行快速重新构建项目
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| cmake_minimum_required(VERSION 3.12) project(server)
# C++ standard set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE "Release") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -flto") # 链接时优化 set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) # IPO优化
# 包含目录设置 include_directories( /usr/include # 显式添加常见路径 /usr/local/include # 第三方库常见安装位置 )
# 查找依赖库 find_package(Threads REQUIRED) # 查找Drogon依赖 find_package(Drogon REQUIRED COMPOMENTS jsoncpp)
set(CONTROLLERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/controllers") message(STATUS "控制器路径是: ${CONTROLLERS_DIR}")
# 添加可执行文件 add_executable( server DatabaseClient.cpp logger.cpp main.cpp RedisClient.cpp # ${CONTROLLERS_DIR}/btyGoose_TestCtrl.cc )
target_link_libraries(server PRIVATE mysqlcppconn Threads::Threads gflags fmt redis++ hiredis Drogon::Drogon ${JSONCPP_LIBRARIES} ${OPENSSL_LIBRARIES} )
|
创建控制器类
1 2 3 4 5 6 7 8
| # 当前位置:BeautyGoose/Server/server/src mkdir controllers && cd controllers drogon_ctl create controller -h btyGoose::TestCtrl drogon_ctl create controller -h btyGoose::AccountCtrl drogon_ctl create controller -h btyGoose::ConsumerCtrl drogon_ctl create controller -h btyGoose::MerchantCtrl drogon_ctl create controller -h btyGoose::AdminCtrl
|
解决宏定义冲突问题
原本的日志的宏定义与trantor
中的宏定义冲突,所以需要修改原本的宏定义,加上前缀SUP_
防止冲突