“my12306”项目日报(二)

2021-11-10 15:20:58 浏览数 (1)

这些天事情略多,所以进度慢了点,不过会在原定日期前完成,问题不大。

一半时间花在环境搭建上,一半时间花在代码修改上,对,我有模板的(前一个项目)。


工程目录创建脚本

写个脚本,省的每次创建项目都要手动去搞一堆的文件夹,看着也烦。

代码语言:javascript复制
mkdir bin
mkdir bulid
mkdir include
mkdir src
mkdir test
mkdir thirdparty
touch CMakeLists.txt
chmod 777 *
cd include
mkdir db
mkdir redis
mkdir model
chmod 777 *
cd ../src
mkdir db
mkdir redis
mkdir model
touch CMakeLists.txt
chmod 777 *

可以根据自己的需求自行调整。


CMakeLists.txt 编写

一级cmake

都是老套路啦:

代码语言:javascript复制
cmake_minimum_required(VERSION 3.0) # 最低版本
project(main)   # 给这个工程一个名字,这不是可执行文件的名字,是工程的名字

# 设置编译选项,不知道最后能不能过
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g)

# 设置可执行文件最后的输出目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

# 配置头文件的搜索路径
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/include/model)
include_directories(${PROJECT_SOURCE_DIR}/include/db)
include_directories(${PROJECT_SOURCE_DIR}/include/redis)
include_directories(${PROJECT_SOURCE_DIR}/thirdparty)

# 加载子目录
add_subdirectory(src)

二级cmake

代码语言:javascript复制
# 定义一个SRC_LIST变量,存放该目录下所有的源文件
aux_source_directory(. SRC_LIST)
aux_source_directory(./db SRC_LIST)
aux_source_directory(./model SRC_LIST)
aux_source_directory(./redis SRC_LIST)

# 指定生成可执行文件
add_executable(PickServer ${SRC_LIST})

# 指定可执行文件生成时需要链接的外部库
target_link_libraries(PickServer muduo_net muduo_base pthread mysqlclient)

# 指定可执行文件存放位置
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

cmake 安装

由于是新系统,所以是没有cmake的,需要自行安装。

不知道怎么安装的话,在终端执行个cmake命令,报错的时候会教你怎么安装的。

安装完之后,如果还遇到这样的报错:

代码语言:javascript复制
No CMAKE_CXX_COMPILER could be found.

也好办:

代码语言:javascript复制
sudo apt-get update
sudo apt-get install -y build-essential

安装boost库

因为要使用muduo库,需要先安装个boost。

boost的安装按照这篇教程就好:C 搭建集群聊天室(一):安装boost库

问题不大,不过可能会花费半个小时时间,在 ./b2 的时候。


安装muduo库

安装muduo库的过程有点波折,所以我修改了一下之前的教程,现在依旧是一马平川:

C 搭建集群聊天室(二):安装muduo网络库


网络层 && 命令模式 && 业务层

其实这些代码都在 chat 这个项目里面有了,自行修改即可。我就不贴了。


cannot find -lmysqlclient

这个问题的解决方案,之前用CentOS是有一份,但是我发现Ubuntu的解决方案和CentOS的不同,于是对原教程进行了修改:

问题解决:cannot find -lmysqlclient

问题都不大的哈。


预计下午可以把所有的业务都写完。

代码嘛,就不公开了,毕竟是毕设嘛。

0 人点赞