Makefile 简介
一、引例:
#Makefile
objects=test1.o test2.o
main:$(objects)
gcc -o main $(objects)
clean:
rm main $(objects)
二、简介:
中文格式:
规则的目标 : 规则的依赖
规则的命令行
英文格式:
target : prerequisites
command
介绍:
target:
通常是 最后需要生成的文件名 或者 为了实现这个目的而必需的 中间过程文件名。
可以是 .o文件、也可以是最后的可执行程序的文件名等。
另外,目标也可以是一个make执行的动作的名称,如目标“clean”,我们称这样的目标是“伪目标”。
prerequisites:
生成规则目标所需要的文件名列表。
通常一个目标依赖于一个或者多个文件。
ommand:
执行规则所用的命令行语句。
注意:每一个命令行必须以[Tab]字符开始。
[Tab]字符告诉 make 此行是一个命令行。make 按照命令完成相应的动作。
这也是书写 Makefile 中容易产生,而且比较隐蔽的错误。
三、规则与相关语句
(一) 换行处每行的最后都要加上 “ / ”
(二) 指定变量:
在上面的引例中,objects=test1.o test2.o 中的 objects 就是作为指定变量出现。
因为 test1.o test2.o 这两个.o 文件在下面的程序当中出现了不止一次,类似C语言中的宏定义
如果需要更改的时候只需要改最上面的指定变量就可以了。
作用:不但减少书写的工作量,而且可以减少修改而产生错误的可能。
使用: $(objects) // 语句中前面加空格
(三) 清除工作目录过程文件:
在上面的引例中,clean: rm main $(objects) 中 clean 就作为清除操作。
作用:为了实现清除当前目录中编译过程中产生的临时文件。
使用: clean :
rm main $(objects)
但是通常我们要写成:
.PHONY : clean
clean :
-rm main $(objects)
目的: 1)通过“.PHONY”特殊目标将“clean”目标声明为伪目标。
避免当磁盘上存在一个名为“clean”文件时,目标“clean”所在规则的命令无法执行。
2)在命令行之前使用 “-”,意思是忽略命令“rm”的执行错误。
注意: 这样的一个目标在 Makefile 中,不能将其作为终极目标(Makefile 的第一个目标)。
因为我们的初衷并不是当你在命令行上输入 make 以后执行删除动作。而是要创建或者更新程序。
在我们上边的例子中,就是在输入 make 以后要需要对目标“edit”进行创建或者重建。
四、在终端里使用执行Makefile
(一) 在当前目录下 sudo make
(二) 输入密码后 提示 最终目标已经更新到最新
(三) 在当前目录下 sudo ./main // main为最终目标名字
(四) 显示 程序的界面
Makefile 简介的更多相关文章
- Makefile简介
1.源程序的编译在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器.假设我们有下面一个非常简单的源程序(hello.c):in ...
- qmake, makefile, make是什么东东,makefile简介!
qmake是一个协助简化跨平台开发的构建过程 的工具,Qt附带的工具之一 .qmake能够自动生成Makefile.Microsoft Visual Studio 专案文件 和 xcode 专案文件. ...
- Linux学习:Makefile简介及模板
一.基本概念介绍: Makefile 文件就是告诉make命令需要怎么样的去编译和链接程序. 编写Makefile的基本规则: 1.如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接. 2. ...
- Makefile简易教程
本文部分内容引用: 中文维基百科. 一个简单的Makefile教程. Makefile简介 在软件开发中,make通常被视为一种软件构建工具.该工具主要经由读取一种名为"makefile&q ...
- 转载-------makefile 使用总结
转载自:http://www.cnblogs.com/wang_yb/p/3990952.html 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的 ...
- Makefile使用总结
1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之 ...
- Makefile 使用总结【转】
转自:http://www.cnblogs.com/wang_yb/p/3990952.html 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编 ...
- makefile基础实例讲解 分类: C/C++ 2015-03-16 10:11 66人阅读 评论(0) 收藏
一.makefile简介 定义:makefile定义了软件开发过程中,项目工程编译链.接接的方法和规则. 产生:由IDE自动生成或者开发者手动书写. 作用:Unix(MAC OS.Solars)和Li ...
- makefile学习笔记(一)
1.1:make概述 在linux环境下使用make工具能够比较容易的构建一个属于自己的工程,整个工程的编译只需要一个命令就可以完成编译.连接以至于最后的执行.不过我们需要投入一些时间去学习如何完成m ...
随机推荐
- 题目要求:传入数组 内容为[['lisi','男','27'],['wangwu','男',18],['zhaoliu','男','30']],将此二维数组转化为一维数组,创建自定义函数完成
//自定义函数 function getOne($arr){ $str = ''; //定义空的字符串,用来接收值 foreach ($arr as $key=>$value){ //循环遍历数 ...
- CF698C题解
为什么 \(n,k \leq 20\)? 我还以为是什么 \(n,k \leq 10^6\) 的厉害题/qd 看到这个队列操作很迷惑,但是仔细看看要操作 \(10^{100}\) 遍,所以我们可以直接 ...
- LGP6788题解
太慢了!太慢了!我的替身 [The World] 是最强的替身! \(O(n^{\frac 2 3})\) 的解法!不清楚用 sbt 能不能更快一些,可能会吧.灵感来源于BZOJ4176,同时也可看到 ...
- 2022年官网下安装DBever最全版与官网查阅方法
目录 安装部署DBeaver 一.官网下载安装 1.百度搜索DBeaver. 2.进入主页,点击DownLoad下载. 3.查看列表,选择windows的exe版本下载. 4.找到位置,双击打开,弹出 ...
- C++设计模式 - 备忘录模式(Memento)
状态变化模式 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?"状态变化"模式为这一问题提供了一种解决方案. 典型模式 Sta ...
- CentOS 8 EOL如何切换源?
镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本.建议您切换到Anolis或Alinux.如果您的业 ...
- Oracle 11g中查询CPU占有率高的SQL
oracle版本:oracle11g 背景:今天在Linux中的oracle服务上,运用top命令发现许多进程的CPU占有率是100%. 操作步骤: 以进程PID:7851为例 执行以下语句: 方法一 ...
- web服务器-Nginx下载限速
web服务器-Nginx下载限速 一. 限速介绍 在生产环境中,为了保护WEB服务器的安全,我们都会对用户的访问做出一些限制,保证服务器的安全及资源的合理分配. 限流(rate limiting)是N ...
- (leetcode)链表反转-c语言实现
反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 使用迭代方法,代码 ...
- IDEA使用Docker插件构建镜像
IDEA使用Docker插件构建镜像 记一次坑 第一次插件docker-maven-plugin的 配置文件中没写远程主机的地址 <dockerHost>http://192.168.1 ...