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

CmakeLists学习刨根问底

必要的两项内容

cmake_minimum_required(VERSION 2.5)

project(mymuduo)
  • 这行代码指定了构建项目所需的CMake最低版本为2.5。CMake是一个跨平台的自动化构建系统,它使用CMakeLists.txt文件来定义项目的构建过程。
  • 定义项目的名称为mymuduo。CMake将使用这个名称来生成构建文件,并作为项目目录的根名称。

什么是项目的构建?

C++项目的构建是将源代码转换为可执行程序的过程。这个过程通常包括以下几个关键步骤:

  1. 预处理:在编译之前,预处理器会处理所有的宏定义、头文件包含以及条件编译指令。预处理的结果是一个纯粹的C++源文件,去除了所有的预处理指令。

  2. 编译:编译器将预处理后的C++源文件翻译成汇编代码。这一步主要是将高级语言转换为更接近机器语言的低级语言。

  3. 汇编:汇编器将汇编代码转换为目标机器代码(也称为目标文件或对象文件)。目标文件包含了可以被链接的机器指令,但还不是完整的可执行文件。

  4. 链接:链接器将一个或多个目标文件和库文件合并为一个最终的可执行文件。链接器负责解析外部符号、处理库文件以及生成最终的内存地址。

set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
  • 设置编译生成的动态库(.so文件)的输出路径为项目根目录下的lib文件夹。${PROJECT_SOURCE_DIR}是CMake的一个变量,表示项目的根目录。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -fPIC")
  • 这行代码向C++编译器的标志(flags)中添加了几个选项:
    • -g:启用调试信息,这对于调试构建非常有用。
    • -std=c++11:指定使用C++11标准。这允许项目使用C++11的新特性。
    • -fPIC:生成位置无关代码(Position Independent Code),这对于创建动态库是必需的

aux_source_directory(. SRC_LIST)
  • 使用aux_source_directory命令查找当前目录(.)下的所有源文件,并将它们存储在变量SRC_LIST中。这样,CMake就可以知道哪些源文件需要被编译。
add_library(mymuduo SHARED ${SRC_LIST})
  • 使用add_library命令创建一个名为mymuduo的动态库。SHARED关键字指定要创建的是共享库(动态库)。${SRC_LIST}是之前通过aux_source_directory命令找到的源文件列表。


 


http://www.kler.cn/a/427448.html

相关文章:

  • 洛谷P4913 【深基16.例3】二叉树深度(c嘎嘎)
  • 普及组集训图论--判断负环
  • HarmonyOS 5.0应用开发——UIAbility跳转
  • Java --- 注解(Annotation)
  • 【SpringBoot】StopWatch工具类的使用
  • 【MySQL】视图详解
  • labview使用modbus library实现modbus通信
  • flask+pyecharts实现可登录可视化大屏
  • RT Thread Studio新建STM32F407IG工程文件编译提示错误
  • MYSQL PARTITIONING分区操作和性能测试
  • 志愿服务管理系统设计与实现
  • 网络安全基本原则
  • 原型模式(Prototype Pattern)——对象克隆、深克隆与浅克隆及适用场景
  • 排序算法入门:分类与基本概念详解
  • 单链表---回文结构
  • 静态路由与交换机配置实验
  • springboot的 nacos 配置获取不到导致启动失败及日志不输出问题
  • Java实现三种排序方式
  • 微信小程序px和rpx单位互转方法
  • 【JavaEE】多线程(5)