这些天事情略多,所以进度慢了点,不过会在原定日期前完成,问题不大。
一半时间花在环境搭建上,一半时间花在代码修改上,对,我有模板的(前一个项目)。
工程目录创建脚本
写个脚本,省的每次创建项目都要手动去搞一堆的文件夹,看着也烦。
代码语言: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
问题都不大的哈。
预计下午可以把所有的业务都写完。
代码嘛,就不公开了,毕竟是毕设嘛。