【嵌入式Linux】Cmake、makefile、Cmakelist

2024-05-25 02:44

本文主要是介绍【嵌入式Linux】Cmake、makefile、Cmakelist,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

记录嵌入式 linux环境下的编译方式

测试之前确保你的 Ubuntu 机器上安装了Gcccmake

1. 编译有以下几种方式

Linux系统下,编译一个 .c文件可以有以下几种方式:

  • 直接用 Gcc 编译器编译为可执行文件
  • 编写Makefile文件,使用 make 指令,进行编译
  • 安装 Cmake,使用 make 指令编译

第一种方式在大型项目中,肯定是不实用的,而 Makefile 的语法个人觉得非常复杂,因此为了“投机取巧”,在这里总结一下 cmake 的方式

1.1 直接gcc指令编译

利用指令,编译为可执行文件

gcc main.c -o hello

1.2 写一个Makefile,然后用 make 指令编译

objects = main.o input.o calcu.o
main: $(objects)gcc -o main $(objects)
.PHONY : clean%.o : %.cgcc -c $<clean:rm *.orm main

1.3 写一个Cmakelist,然后用 make指令编译

【工程目录】

├── build
├── CMakeLists.txt
└── main.c

【cmakelist内容】

project(HELLO)
add_executable(hello ./main.c)

【编译】

cd build/
cmake ../
make

以上三种方式比较,明显是使用cmake工具更简单,最起码我个人是这么感觉的

2. Cmake、makefile、Cmakelist

在这里插入图片描述

2.1 make

make 指令是linux 自带的默认常用指令,make指令执行后会在目录中找到 makefile 文件,根据makefile文件中的定义来编译整个工程

但是 makefile 语法在不同的平台间是不一样的,譬如 Visual C++的 nmake、 linux 下的 GNU make、 Qt 的 qmake 等等, 这些 make 工具遵循着不同的规范和
标准, 对应的 Makefile 文件其语法、 格式也不相同,

2.2 cmake

camke 允许开发者编写一种与平台无关的 CMakeLists.txt 文件来制定整个工程的编译流程, 再根据具体的编译平台,生成本地化的 Makefile 和工程文件,最后执行 make 编译。

  • cmake 工具是跨平台的,比如在linux 平台下写了 makefile ,可以直接编译;但是在qt上就是qmake了,然而不同的平台的makefile语法还不一样
  • Cmakelist.txt 在不同的平台间语法是一样的
  • cmake 工具通过解析 CMakeLists.txt 自动生成 Makefile

参考:【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.4

​ 第三十二章 CMake入门与进阶

这篇关于【嵌入式Linux】Cmake、makefile、Cmakelist的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000254

相关文章

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

Linux使用粘滞位 (t-bit)共享文件的方法教程

《Linux使用粘滞位(t-bit)共享文件的方法教程》在Linux系统中,共享文件是日常管理和协作中的常见任务,而粘滞位(StickyBit或t-bit)是实现共享目录安全性的重要工具之一,本文将... 目录文件共享的常见场景基础概念linux 文件权限粘滞位 (Sticky Bit)设置共享目录并配置粘

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件