| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> MakeFile 学习日记二(C++)makeFile中的变量、自动推导、风格、清除 -> 正文阅读 |
|
[C++知识库]MakeFile 学习日记二(C++)makeFile中的变量、自动推导、风格、清除 |
上面是我上一篇文章用引用的代码例子,现在我们用这个例子进行解释。 一、Makefile中的变量
首先说明一下edit的规则: ? ? ? ? (.o)库文件在这里写了两遍,当然完整写的话,clean中也需要再写一遍。当我们的工程中引入了一个新的(.o)文件时,我们需要在这两个地方加入他们,但是随着代码的复杂度增加,这中工作可能就会变得繁琐,我们可能也会因此忘记。为此引入了Make file中的变量(字符串),我们可以将它相近的理解为C语言中的宏。 比如我们可以声明一个objects变量或者是OBJ ,我们就可以在Make file文件的开头定义:
然后我们就能够在makefile中以 “$(objects)”来使用这个变量了,下面是改版后的样子
这样当我们在新加入库文件,我们只需要在变量中添加就可以了。 二、Make的自动推导 ????????GUN的make功能时很强大的,它能够自动的推导文件以及文件以来后面的命令,所以我们没必要在每一个(,o)文件后面都写上相同的命令。它能够自动推到命令。 ? ? ? ? 具体是怎样操作呢,当make发现一个(.o)文件后,他会自动把(,c)文件加到依赖关系中。例如 make 找到一个 a.o的文件,那么 a.c文件就是a.o的依赖文件,并且cc -c a,c 也会被他自动补全。所以上面代码我们还可以省略:
上面的(.PHONY)表示clean是一个伪目标文件。这个后面再说。 三、Makefile的风格 还有一种更加简约的风格,但是不是那么容易理解,我把它贴出来,大家自己理解就行
哎!像我这种比较笨的,就不适合写这样的,费脑子。 四、清空目标文件的规则 每一个makefile文件中都要写一个清空目标文件的规则,这样能够保证我们文件的整洁, 下面有两种写法 写法一:
写法二:
事实上写法二是比较稳妥的写法。 ????????(.PHONY)之前提到过,他会标注clean是一个伪目标。 ????????在rm之前加一个“-”是有啥用呢他会在当rm某些文件碰到问题时不去理会,继续执行后面的事情, 至于为啥么吧clean放在文件最后,这个其实放哪里也可以,大家习惯这样而已。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:13:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |