网上去哪里找做网站的,免费学习资源网站,手机app制作报价,央视十大广告代理公司我们上次用shell命令和vscode编译链接muduo库服务端代码#xff0c;本章节实现编写CMakeLists.txt来编译项目。本次简单介绍CMake#xff0c;并用Cmake编译上次的muduo服务器代码。
1.为什么使用cmake
我们在编译项目时#xff0c;如果编写Makefile的话#xff0c;常常会…我们上次用shell命令和vscode编译链接muduo库服务端代码本章节实现编写CMakeLists.txt来编译项目。本次简单介绍CMake并用Cmake编译上次的muduo服务器代码。
1.为什么使用cmake
我们在编译项目时如果编写Makefile的话常常会很麻烦需要写大量的依赖关系。然而CMake使用简单方便可以跨平台直接生成一个Makefile。因此我们可以选择编写CMakeLists.txt文件自动生成Makefile文件。
2.CMake安装
我们在安装muduo库时已经安装了CMake了但为了讲解CMake完整本次也简单介绍下CMake安装
sudo apt install cmake查看版本
cmake -version3.VSCode配置CMake
为了在使用vscode时由代码提示我们在vscode远程安装CMake Tools和CMake两个插件。然后cmake tools设置点击扩展设置 然后添加环境变量
4.cmake实现上一章的muduo服务器项目
首先先看下目录结构 这是最简单的文件结构了我们看看CMake怎么生成一个Makefile文件。 一般我们在终端需要使用以下指令去编译链接等操作
g -o 编译结果(可执行文件/*.a/*.so) 需要编译的源文件列表 -编译选项(-g/-o等) 多个*.cpp -I头文件搜索路径 -L库文件搜索路径 -l库文件名列如我们在本列中使用以下指令
g -o server muduo_server.cpp -lmuduo_net -lmuduo_base -lpthread我们在CMakeLists.txt中输入以下信息每段内容会注释介绍
cmake_minimunm_required(VERSION 3.0) //最低的cmake版本
project(项目名称)
# 配置编译选项
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g) ##CMAKE_CXX_FLAGS是CMake预定义变量设置 C 编译选项
# 配置头文件搜索路径
# include_directories()
# 配置库文件搜索路径
# link_directories()# 设置需要编译的源文件列表
set(SRC_LIST ./muduo_server.cpp)# 设置可执行文件最终存储的路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)# 把.指定路径下的所有源文件名字放入变量名SRC_LIST里面因为一个一个添加会很麻烦
# aux_source_directory(. SRC_LIST)# 表示生成可执行文件server由SRC_LIST变量所定义的源文件编译而来
add_executable(server ${SRC_LIST})
# 表示server这个目标程序需要连接muduo_net muduo_base pthread这三个库文件
target_link_libraries(server muduo_net muduo_base pthread)然后使用cmake 生成Makeflie文件
cmake CMakeLists.txt由上图可见生成了很多新的文件除了Makefile文件其他都是临时文件可以删除。 然后我们使用make命令去执行Makefile文件
make最终在bin中生成了可执行文件。 但是生成了很多临时文件我们可以希望生成的临时文件不影响原来的文件我们可以在创建一个build文件夹在这个文件下下使用cmake这样临时文件都在build文件下目录结构如下 在build文件夹下执行cmake,生成Makefile和其他临时文件
cmake ..目录结果: 使用make执行Makefile
make结果如下 在bin目录下生成了可执行文件。
总结
本章介绍了为什么使用cmake比手写Makefile简单cmake安装、vscode配置以及用cmake编译上一章的代码。但是对于一个复杂的项目使用cmake还需要其他额外的配置后面会再详细介绍。