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
    +关注

    关注

    87

    文章

    11522

    浏览量

    214382
  • gcc编译器
    +关注

    关注

    0

    文章

    78

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

    支持48位寻址!华为开源文件系统EROFS跨入大模型训练

    的要求。 ? 最近,开源文件系统EROFS在即将到来的Linux 6.15内核周期中进行扩展,以处理更大规模的存储系统。此次改进旨在使EROFS更适配AI训练场景及其他大规模数据归档需求。 ? 在Linux 6.15合并窗口开启
    发表于 03-27 01:22 ?816次阅读

    从零开始驯服Linux(一):ZYNQ-Linux启动文件构建全解析

    定位问题并优化代码。本教程我们就一起来看一下,如何基于正点原子提供的出厂相关源代码,制作ZYNQ开发板的启动文件,并成功运行Linux系统。 1.1制作前准备工作1)、一款ZYNQ开发板:本次以领航者
    发表于 03-20 16:48

    使用STM32CubeMX生成CMake工程的FLASH.ld被更改怎么解决?

    使用STM32CubeMX生成CMake工程之后,对STM32xxxx_FLASH.ld进行了修改。然后再次使用STM32CubeMX对工程进行修改的时候,STM32xxxx_FLASH.ld文件汇总被修改的部分会被恢复原状。请问各位有没有好的办法能够解决这个问题,烦请指
    发表于 03-10 06:52

    为什么无法在OpenVINO? 2021.3源中使用CMAKE编译ONNX模型?

    :50:10:严重错误:onnx/onnx-ml.pb.h:无此类文件或目录#include“onnx/onnx-ml.pb.h” 使用 CMAKE* 编译命令: cmake
    发表于 03-05 08:29

    Linux的用户与创建

    Linux的用户与创建 用户的类型 超级管理用户: 权限最高的用户(uid:0) #uid:是用户的身份证号,Linux系统只认uid 普通用户: 权限受限的用户(uid:1000-60000
    的头像 发表于 12-20 14:24 ?793次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>中</b>的用户与创建

    Linux文件查找

    Linux文件查找 1.find查找概述 为什么要有文件查找,因为很多时候我们可能会忘了某个文件所在的位置,此时就需要通过find来查找。
    的头像 发表于 12-03 17:09 ?807次阅读

    Linux文件压缩打包的各种姿势

    1.文件打包与压缩 1.什么是文件压缩? 将多个文件或目录合并成为一个特殊的文件。比如: 搬家…
    的头像 发表于 12-02 09:25 ?661次阅读

    Jtti:Linux虚拟文件系统和容器化的关系

    Linux,虚拟文件系统(VFS)和容器化技术之间有密切的关系。容器化是指通过使用容器来运行应用程序,而容器本质上是在宿主机上运行的独立进程,它们通常共享宿主机的操作系统内核和部分文件
    的头像 发表于 11-27 15:38 ?525次阅读

    使用lsof实现对linux文件的误删除恢复练习

    本文记录使用lsof实现对linux文件的误删除恢复练习。题目如下: 1.确保当前nginx进程运行 2.删除日志文件,rm -f /va
    的头像 发表于 11-24 11:14 ?676次阅读
    使用lsof实现对<b class='flag-5'>linux</b><b class='flag-5'>文件</b>的误删除恢复练习

    Linux文件系统的挂载过程

    Linux文件系统(rootfs)是Linux系统中所有其他文件系统和目录的起点,它是内核启动时挂载的第一个文件系统。
    的头像 发表于 10-05 16:50 ?1015次阅读

    如何构建Linux文件系统

    构建Linux文件系统是一个涉及多个步骤和概念的过程,它对于Linux系统的启动和运行至关重要。
    的头像 发表于 10-05 16:47 ?735次阅读

    如何更改Linux文件系统终端显示颜色

    自己制作的简单 Linux 文件系统,你会发现终端显示为黑白色,很不好看
    的头像 发表于 08-12 17:29 ?1330次阅读
    如何更改<b class='flag-5'>Linux</b><b class='flag-5'>文件</b>系统终端显示颜色

    Linuxcut命令的实用示例

    Linux command cut 用于文本处理。您可以使用此命令通过选择列从文件中提取部分文本。
    的头像 发表于 08-05 15:14 ?766次阅读