【Linux】初步使用makefile

news/2024/9/8 9:35:18

makefile

  • 1 快速使用
    • 1.1 认识makefile
    • 1.2 使用makefile
  • 2 深入理解
    • 理解 **依赖关系 与 依赖方法**
    • 如何实现源代码修改了才会重新编译
  • 3 内置符号理解
  • Thanks♪(・ω・)ノ谢谢阅读!!!
  • 下一篇文章见!!!

1 快速使用

  1. 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
  2. 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作
  3. makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
  4. make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
  5. make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建

1.1 认识makefile

makefile 可以实现自动化构建代码工程
首先 来认识一下make makefile
在这里插入图片描述

1.2 使用makefile

我们首先编写一个简单的makefile文件
在这里插入图片描述

我们使用make 命令来执行
在这里插入图片描述
然后我们就成果得到了可执行程序mytest,并可以成功执行。
再通过使用make clean命令 可以成功删除清理mytest.
在这里插入图片描述

2 深入理解

在这里插入图片描述
我们先以前两行讲解:

  1. 依赖方法前必须使用TAB进行开头,不能使用4个空格
  2. make 命令会读取makefile的内容,完成编译/清理工作。
  3. 依赖文件列表可以为空
  4. makefile 从上向下扫描 默认生成第一个目标文件(一般把可执行程序放在开头

在这里插入图片描述
这里 发现 连续两次make 不能成功,但是加上.PHONY 或 源代码更新就可以。
6. .PHONY : XXX 修饰 XXX表示总是被执行(不断make就可以实现了)

理解 依赖关系 与 依赖方法

通过一个故事理解:

月末了,在上大学的小明没有钱了,所以他拨通了那个男人的电话说:爸! 我是你儿子。 这就是表明依赖关系
而此时在爸爸这边只听到了爸! 我是你儿子 ,爸爸非常不理解,你是我儿子咋了?爸爸并不知道小明的需求。所以只表明依赖关系是不够的。
小明也认识到了这点,他再次打了回去:爸! 我是你儿子。我没钱了,给我打点钱。
此时前一句 是表明依赖关系,后一句表明依赖方法,完整表达了意思。

如何实现源代码修改了才会重新编译

在这里插入图片描述

只有源代码的“修改时间” 比 可执行程序 的“修改时间”新 ,才会重新编译。

3 内置符号理解

在这里插入图片描述

$@ 表明 目标文件
$^ 表明 依赖文件列表
$< 代表第一个依赖文件

类似C语言的宏定义,make 时会自动替换

在这里插入图片描述
这样可以递归实现编译的全过程。层层嵌套
在这里插入图片描述
使用变量:
在这里插入图片描述

Thanks♪(・ω・)ノ谢谢阅读!!!

下一篇文章见!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/8244.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

勒索病毒最新变种.faust勒索病毒来袭,如何恢复受感染的数据?

引言&#xff1a; 随着我们进入数字化时代&#xff0c;数据的重要性变得愈发显著&#xff0c;而网络安全威胁也日益增加。.faust勒索病毒是其中一种备受恶意分子钟爱的危险工具&#xff0c;它通过加密用户文件并勒索高额赎金来对个人和组织发起攻击。本文将深入探讨.faust勒索…

【python--迭代生成器闭包面向对象继承多态】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;深度学习 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; python--迭代生成器闭包面向对象继承多态 往期内容1.迭代for...in字典的迭代列表迭代 生成器推导式的…

在VSCode中创建Java项目

在VSCode中创建Java项目 首先&#xff0c;保证安装了Java的JDK. WinR -> 输入cmd -> 输入 java -version -> 然后可以看到安装的JDK版本&#xff0c;如果没安装可以去找教程。 JDK安装参考教程 打开VSCode&#xff0c;打开扩展&#xff08;Ctrl Shift S&#xff…

95.网游逆向分析与插件开发-游戏窗口化助手-窗口化助手显示与大小调整

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;地图数据获取的逆向分析与C代码还原 码云地址&#xff08;游戏窗口化助手 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;e85c0fc8b85895c8c…

flask+pyinstaller实现mock接口,并打包到exe运行使用postman验证

flask代码 from flask import Flask, request, jsonifyapp Flask(__name__)app.route("/login", methods[POST]) def login():username request.json.get("username").strip() # 用户名password request.json.get("password").strip() # 密…

搜索专项---最短路模型

文章目录 迷宫问题武士风度的牛抓住那头牛 一、迷宫问题OJ链接 本题思路:只需要记录各个点是有哪个点走过来的&#xff0c;就能递推得出路径。记录前驱假设从 1,1 这个点向下走到了2, 1&#xff0c;则将2,1这个点的前驱记为1,1。这样&#xff0c;将整张地图 bfs 后&#xff0c…