当前位置: 首页 > news >正文

《Muduo网络库:CMake构建集成编译环境》

CMake简介

使用简单方便,可以跨平台,构建项目编译环境。比直接写Makefile简单,在构建大型工程编译时,需要写大量的文件依赖关系,可以通过简单的CMake生成负责的Makefile文件。大部分的开源项目也都是使用CMake来编译的。

使用g++/gcc编译生成一个可执行程序通常是:

《Linux:动态库动态链接与静态库静态链接》-CSDN博客

g++/gcc -o 可执行文件名 源文件 -I(大i)头文件路径 -L库文件路径 -l(小L)库文件名

eg:

 gcc -o mymath main.c -I ./mylib/include -L ./mylib/lib -l mymath

以上篇Muduo网络编程的服务器程序示例,要以g++编译运行:

《Muduo网络库:基于Muduo的网络服务器编程示例》-CSDN博客

使用CMake

首先要在系统的根目录下创建CMakeLists.txt配置文件,cmake命令会执行目录下的CMakeLists.txt配置文件里面的配置项。

一个基本的CMakeLists.txt配置文件内容如下,以编写的Muduo网络编程服务器程序示例。

一个大型工程中,会有很多模块,有的生成可执行文件,有的生成so动态库、静态库等,用命令是复杂的,所以,一般都是用CMake构建集成编译环境,简单方便。

cmake命令会在你指定的路径下找CMakeLists.txt文件生成相应的构建系统文件(如Makefile)。

生成构建文件后,可以看到也生成了Makefile,执行make进行实际编译。make clean清理可执行文件。

但是,编译产生的这些中间文件跟我们的工程文件掺杂到一起了,实际上,一般是不会这样去做的。

一个正式的工程构建

一个正式的源码工程应该有这几个目录:

  • -bin                     存放最终可执行文件
  • -build                  存放编译中间文件
  • -include              存放头文件
  • -lib                      存放库文件
  • -src                     存放源文件
  • -thridparty           存放第三方库文件
  • -test                    存放测试文件
  • CMakeLists.txt    编译

对于当前程序,我们可以这样做,建立一个build目录,进入build执行cmake .. ,这样cmake编译生成的中间文件就在build目录下了。

再执行make。

但是,可执行文件就生成在build目录下了。在工程目录下并没有可执行文件。

那么,现在我们需要把可执行文件生成到新创建的bin目录下。更改CMakeLists.txt配置文件。

再重新执行cmake .. ,make。build目录下存放的就都是中间文件了,最终的可执行文件存放在工程目录下的bin目录里面。

这里CMakeLists.txt是用来编译testmuduo目录下的可执行文件的。还有一种常见的方式是,CMakeLists.txt放在工程根目录同级路径下(跟testmuduo一个路径下创建)用来做总控制编译。

在同级目录下执行cmake .,cmake会在当前目录下找到CMakeLists.txt,由于指定了搜索路径,就会去指定路径(testmuduo)继续找CMakeLists.txt生成构建文件。

CMake常用的预定义变量

PROJECT_NAME : 通过 project() 指定项目名称
PROJECT_SOURCE_DIR : 工程的根目录
PROJECT_BINARY_DIR : 执行 cmake 命令的目录
CMAKE_CURRENT_SOURCE_DIR : 当前 CMakeList.txt 文件所在的目录
CMAKE_CURRENT_BINARY_DIR : 编译目录,可使用 add subdirectory 来修改
EXECUTABLE_OUTPUT_PATH : 二进制可执行文件输出位置
LIBRARY_OUTPUT_PATH : 库文件输出位置
BUILD_SHARED_LIBS : 默认的库编译方式 ( shared 或 static ) ,默认为 static
CMAKE_C_FLAGS :  设置 C 编译选项
CMAKE_CXX_FLAGS : 设置 C++ 编译选项
CMAKE_CXX_FLAGS_DEBUG : 设置编译类型 Debug 时的编译选项
CMAKE_CXX_FLAGS_RELEASE : 设置编译类型 Release 时的编译选项
CMAKE_GENERATOR : 编译器名称
CMAKE_COMMAND : CMake 可执行文件本身的全路径
CMAKE_BUILD_TYPE : 工程编译生成的版本, Debug / Release

构建Muduo项目编译CMake文件

简单了解了CMake使用之后,我们顺便来构建接下来要写的Muduo项目编译CMake文件。

http://www.dtcms.com/a/403188.html

相关文章:

  • IDEA services面板+自动运行项目
  • 云原生网关Higress介绍与部署指南
  • 手机网站是怎么做的图片设计制作软件
  • 亚像素边缘检测思想
  • 云服务器需要备案吗?如何备案
  • AutoDL使用
  • 检察院门户网站建设方案磁力库
  • 时序数据库选型指南:Apache IoTDB引领数字化转型新时代——核心概念与关键技术解析
  • Hash算法全解析:原理、安全风险与全球法规要求
  • odoo阿里云大模型多字段内容翻译
  • 【硬核对比】Hive与MySQL全方位深度对比:从架构、SQL语法到应用场景,搞懂选型不踩坑
  • 【Java并发】深入解析ConcurrentHashMap
  • 【Windows10】MySQL9.4安装配置
  • 网站建设怎么做账安徽鲁班建设集团网站
  • 芋道源码 - 连接消息队列 rabbitmq
  • 语义三角论对人工智能自然语言处理中深层语义分析的影响与启示
  • 如何做超一个电子商务网站外贸单子怎么找
  • SSH 连接中断后进程是否继续运行?
  • 知识检索中的四大评估指标:准确率、精确率、召回率与F1分数详解
  • 做外汇需要关注哪几个网站商城网站建设专业公司
  • 【K8s】Kubernetes 虚拟机管理工具之 KubeVirt
  • 一命速通:Go 语言操作 Office Excel 文档,从入门到实战解析
  • 基于 C++ 的高雷诺数湍流直接数值模拟求解器设计与性能优化
  • SpringBoot 整合机器学习框架 Weka 实战操作详解
  • 做采购常用的几个网站连锁销售平台
  • 使用 Python 拆分与合并 Excel 文档:告别繁琐,拥抱自动化
  • JavaWeb--day9--SpringBootWeb案例(一)
  • 前端JavaScript中常见的异常类型
  • 网站建设报价多少钱门店推广是什么意思
  • 同时卖出认购期权和认沽期权怎么样?