前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CMake项目的编译流程

CMake项目的编译流程

作者头像
极客开发者
发布2022-01-18 14:28:27
1.7K0
发布2022-01-18 14:28:27
举报
文章被收录于专栏:极客开发者

本文是本系列的第六篇文章,你可以通过以下链接阅读以前的章节

1.Linux中编译C++代码的g++工具,以及g++的常用操作指令

2.Linux下C++命令行编译示例

3.Linux下的GDB调试器常用指令

4.Linux下C++命令行调试实战

5.跨平台编译工具-CMake的语法特性与常用变量

1. 概述

CMake项目的主要目录存在一个 CMakeLists.txt 文件

我们有两种当时设置编译规则

  • 包含源文件的子文件夹包含 CMakeLists.txt 文件,主目录的 CMakeLists.txt 通过 add_subdirectory 添加子目录即可
  • 包含源文件的子文件夹未包含 CMakeLists.txt 文件,子目录编译规则体现在主目录的 CMakeLists.txt 文件

2. 编译流程

在 Linux 平台下使用 CMake 构建 C/C++ 工程的流程如下:

  • 编写 CMakeLists.txt 规则
  • 执行 cmake $PATH 生成 Makefile(PATH 是CMakeLists.txt 所在的顶层目录)
  • 执行 make 进行编译

注意一下 Linux 以下几个文件目录知识

  • .或者 ./ 代表当前目录
  • ..或者 ../ 代表上一级目录
  • ../..或者 ../../ 代表上上一级目录

3. CMake的两种构建方式

3.1. 内部构建 (in-source build) : 不推荐使用

内部构建会产生很多中间文件,这些文件并不是我们最终想要的,和工程源代码文件放在一起会显得杂乱无章。

内部构建示例

代码语言:javascript
复制
# 在项目源代码根目录下,使用  cmake 指令解析 CMakeLists.txt ,生成 Makefile 和其他文件
cmake .
# 执行 make 命令,生成 target
make

3.2. 外部构建 (out-of-source build) : 推荐使用

将编译的目录和源代码目录区分开来,放在不同目录中

外部编译示例

代码语言:javascript
复制
# 1. 在当前目录下,创建 build 文件夹
mkdir build
# 2. 进入build目录
cd build
# 3. 解析上级目录的 CMakeLists.txt ,生成 Makefile 和其他文件
cmake ..
# 4. 执行 make ,生成 target
make
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客开发者up 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 概述
  • 2. 编译流程
  • 3. CMake的两种构建方式
    • 3.1. 内部构建 (in-source build) : 不推荐使用
      • 3.2. 外部构建 (out-of-source build) : 推荐使用
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档