0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中CMake的使用1-单个源文件

码农爱学习 来源:码农爱学习 作者:码农爱学习 2022-09-18 17:56 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1 引言

linux中进行C/C++开发,一般都是先用编辑器写好代码,然后使用gcc工具来编译程序。

文件数量不多的工程,可以直接敲gcc命令进行编译。对于文件较多的工程,就要使用Makefile来管理代码的编译了。

而手动编写Makefile其实也是具有一定的难度的,更方便的方式是使用更易编写CMake来自动生成Makefile。

2 Linux中安装CMake

这里插一句,在Window系统中,许多人也用过CMake,它可以配合集成开发环境如Visual Studio,通过图形化的操作界面,操作CMake图形界面进行代码的编译。

本篇介绍的,在Linux中使用CMake,还用不到图形界面,仍然是文本编辑的方式使用CMake。

CMake在Linux的安装,直接使用命令安装即可:

sudo apt install cmake

安装完成之后可以查看cmake的版本,我用的是3.10.2

poYBAGMm6bqADuutAABQhSE5U8o325.png

3 编译单个文件的CMake基础示例

3.1 编写C源文件

首先写一个最简单的hello word程序,hello.c:

#include 

int main(void)
{
	printf("Hello World\n");
	return 0;
}

3.2 编写CMakeLists.txt

然后在相同目录下编写CMakeLists.txt:

cmake_minimum_required (VERSION 2.8)

project (hello)

add_executable(hello hello.c)

这是一个最基础的CMake使用模板,这3行的含义如下:

第一行:要求cmake的最低版本为2.8

第二行:工程名

第三行:生成的可执行文件名为hello,使用的源文件为hello.c

注:以上3条,add_executable起主要作用,前两条去掉也可以运行

3.3 执行cmake指令生成Makefile

然后输入以下命令运行cmake,从而帮我们自动生成makefile文件:

cmake .

这个“点”表示是当前目录搜索源文件。

cmake指令的执行结果如下:

pYYBAGMm6dCASh17AAHJTPu5pv4743.png

可以看下CMake生成的makefile文件,相比较自己手写的makefile,这个自动生成的makefile,内容很多:

poYBAGMm6deAUviJAAFHqpXaAPg931.png

3.4 执行make指令编译代码

makefile文件产生之后,就可以使用make指令来编译源代码了:

make

执行make指令之后,可以看到生成了可执行文件hello,运行这个hello文件,就可以看到程序的输出了:

pYYBAGMm6d6AEe4tAAFv5vfyFgU223.png

4 总结

本篇介绍了Liunx中如何使用CMake来生成makefile,进行进行源程序的编译。

将上述的CMake编译单个源文件的使用操作总结为一张图:

pYYBAGMm6eSAc8vCAAC7UozHIZM464.png

编写CMake主要就是编写CMakeLists.txt,基础模板为:

cmake_minimum_required (VERSION 2.8)

project (hello)

add_executable(hello hello.c)

其中最主要的一句就是:

add_executable(hello hello.c)




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11817

    浏览量

    219555
  • gcc编译器
    +关注

    关注

    0

    文章

    78

    浏览量

    4035
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    S32DS IDE:CMake项目,使用 PE 进行 ELF 文件调试时,它没有按预期工作,为什么?

    我正在使用 cmake nijia 而不是 S32DS IDE 来创建 ELF 文件。目标开发板是S32K344,编译器是GHS。 到目前为止,我已经成功生成了 ELF 文件,但是在使用 PE 进行
    发表于 04-16 11:14

    如何在 STM32Cube CMake 工程添加源文件

    STM32Cube for Visual Studio Code V3 版本(例如,如下图所示的 Pre-release V3.4.11)打开,编辑,编译以及调试。但是除了 STM32CubeMX 生成的文件,还有自己开发的源文件。例如,在根目录下有个目录名为 cust
    发表于 04-15 16:07 0次下载

    MIMX9331 SDK 缺少的文件怎么获取?

    失败,因为缺少以下文件: 组件/uart/component_lpuart_adapter.mimx9331.cmake 设备/mimx9331/all_lib_device.cmake 设备
    发表于 04-02 06:39

    LAT1574_如何在 STM32Cube CMake 工程添加源文件

    自己开发的源文件。例如,在根目录下有个目录名为 custom,里面有一些文件,都需要编译。那么,在没有图
    发表于 03-11 10:46 0次下载

    Linux文件删除的底层原理和恢复方法

    rm -rf 大概是 Linux 世界里杀伤力最大的命令,没有之一。手一抖、路径一错、通配符一飘,几个 G 的数据就没了。更要命的是 Linux 默认没有回收站机制,rm 删掉的文件不会像 Windows 那样安静地躺在回收站里
    的头像 发表于 02-11 09:14 911次阅读

    深入剖析TS5A3159:1-Ω SPDT模拟开关的卓越性能与应用指南

    深入剖析TS5A3159:1-Ω SPDT模拟开关的卓越性能与应用指南 在电子工程师的日常设计,模拟开关是一种常见且关键的元件,它在信号切换、路由等方面发挥着重要作用。今天,我们将深入探讨德州仪器
    的头像 发表于 01-15 11:45 534次阅读

    探索TS5A3359:1-Ω SP3T 双向模拟开关的卓越性能与设计应用

    )的TS5A3359,这是一款具有出色性能和广泛应用前景的1-Ω SP3T双向模拟开关。 文件下载: ts5a3359.pdf 一、产品概述 TS5A3359是一款专为1.65 V至5.5 V单电源供电设计的双向、单通道、单刀三掷(SP3T)模拟开关。它提供了信号切换解决
    的头像 发表于 01-15 09:45 562次阅读

    深入剖析TS5A23159:1-Ω 2-Channel SPDT模拟开关的卓越性能与应用

    深入剖析TS5A23159:1-Ω 2-Channel SPDT模拟开关的卓越性能与应用 作为电子工程师,在日常设计,我们常常需要寻找性能优异、可靠性高的模拟开关来满足各种电路设计需求。今天,就来
    的头像 发表于 01-15 09:45 360次阅读

    ESP32 编译过程 bootloader 配置阶段的 CMake 缓存冲突错误,记录

    你遇到的是 ESP32 编译过程 bootloader 配置阶段的 CMake 缓存冲突错误,核心原因是系统混合了 ESP-IDF v5.5.1 和 v5.4.3 两个版本的路径,导致
    发表于 12-23 07:07

    linux的压缩和解压操作

    1、 压缩/解压操作 在开发,很多时候会遇到某些文件要进行压缩的操作,比如文件较大不方便传输的时候,可能会考虑对文件进行压缩,以减少
    发表于 12-23 06:56

    飞凌嵌入式ElfBoard-Linux系统文件分类

    从本质上讲,Linux系统就是由文件组成的,一切皆文件linux系统设计的核心理念,接下来介绍一下文件类型的种类:
    发表于 12-09 08:59

    【CPKCOR-RA8D11、VSCODE+CMAKE开发环境搭建

    利用Renesas Platform安装 这是我安装的工具,扩展会自动收集已安装工具: 5、安装VS CODE扩展CMAKE TOOLS 方便配置编译CMAKE工程 二、从点灯开始 1、FSP
    发表于 10-09 16:17

    Linux三大主流文件系统解析

    还在为选择哪个文件系统而纠结?作为一名摸爬滚打多年的运维老鸟,我将用最接地气的方式,带你彻底搞懂 Linux 三大主流文件系统的奥秘。
    的头像 发表于 08-05 17:37 1748次阅读

    SEGGER工具链集成到CMake和VS Code了

    SEGGER公司已将其嵌入式开发工具链集成到了广泛使用的CMake构建配置工具,这意味着基于Visual Studio Code(VS Code)代码编辑器的应用开发可以方便的使用SEGGER工具实现了。
    的头像 发表于 07-23 15:06 1192次阅读

    NCS怎么添加.c.h文件到工程

    Directories添加头文件路径 对工程或者文件夹鼠标右击就可以添加文件或者.c文件管理文件等操作。 可以看出,Segger添加
    的头像 发表于 06-27 14:48 1190次阅读
    NCS怎么添加.c.h<b class='flag-5'>文件</b>到工程