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命令找到的源文件列表。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值