为什么需要.PHONY?
栗子:
如果make后,如果新建一个:touch clean文件,再执行make clean时,将不会执行rm命令,因为make clean和文件clean重名问题。为了避免出现这个问题,需要在Makefile里增加:.PHONY: cleanMakefile中非常三个变量:$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。1、创建hello.c文件
#include <stdio.h>
int main()
{printf(".PHONY 测试!\n");
}2、编写Makefile
$(CC) = gcc
all:hello test //hello和test为两目标文件
hello :hello.c$(CC) -o $@ $<
test :hello.c$(CC) -o $@ $<
clean:rm hello3、执行编译和删除命令
# make
# make clean4、在当前目录下创建clean文件,此时执行make clean
报log如下,没有执行删除hello操作
make clean
make: “clean”是最新的。5、在Makefile修改如下,此时顺利执行$(CC) = gcc
.PHONY:clean #增加
all:hello test
hello :hello.c$(CC) -o $@ $<
test :hello.c$(CC) -o $@ $<
clean:rm hello   总结:为了解决问题,我们将目标clean定义成伪目标。也就是添加:.PHONY:clean当一个目标被声明为伪目标后,make在执行规则时不会去试图去查找隐含规则来创建它。这样就提高了make的执行效率,也不用担心由于目标和文件名重名了。

Makefile .PHONY用法相关推荐

  1. makefile .phony targets

    makefile .phony targets Phony Targets PHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字.有两种理由需要使用PHONY 目标:避免和同名文件冲突,改 ...

  2. makefile/make用法

    陈皓 (CSDN) 概述 -- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都 为你做了这个工作,但我觉得要作一个好的和 profession ...

  3. makefile phony

    2019独角兽企业重金招聘Python工程师标准>>> Phony Targets .phony是一个特殊工作目标(special target) 它用来指定一个假想的工作目标,也就 ...

  4. linux Makefile PHONY作用

    PHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字.有两种理由需要使用PHONY 目标:避免和同名文件冲突,改善性能. 如果编写一个规则,并不产生目标文件,则其命令在每次make 该目标 ...

  5. makefile .PHONY

    PHONY .PHONY :clean clean:rm -rf a.out makfile经常会看到.PHONY的命令..PHONY 的作用是什么 1首先要知道makefile中除了一些常量的声明外 ...

  6. makefile PHONY目标

    Phony Targets PHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字.有两种理由需要使用PHONY 目标:避免和同名文件冲突,改善性能. 如果编写一个规则,并不产生目标文件,则 ...

  7. make/Makefile的用法

    make/Makefile: 1. make make是一条命令 2. makefile Makefile 是一个文件,两个搭配起来使用,完成项目自动化处理 3. make/Makefile的作用: ...

  8. linux中makefile高级用法--makefile调用makefile

    一.介绍 在大型项目中,makefile调用makefile很常见,也很方便,这里给出调用方法 二.实例 1.代码树 app_top下,有顶层makefile和编译工具的设置文件Rules.make, ...

  9. makefile 基础用法

    1.call 执行时函数可以传递参数使用 2.FORCE 3..PYTHON 伪目标,防止冲突,可以继续执行 4.$$ var=3                       # a target: ...

最新文章

  1. 计算机硬件带软件怎么入账,小企业购置计算机硬件所附带的、未单独计价的软件,通过( )科目核算。A.无形资产B.固定资产C.在 - 赏学吧...
  2. Python3.2 --- Print函数用法
  3. win10怎么共享打印机_共享打印机添加不上怎么办?建议收藏备用
  4. 第十三天-迭代器、三元表达、字典生成式、生成器、递归
  5. 信号集操作函数,信号未决、阻塞、递达
  6. 3K档真香旗舰!一加9RT今日正式开售:榨干索尼IMX 766旗舰传感器
  7. 从下往上看--新皮层资料的读后感 第一部分:皮层细胞
  8. 物维管理、楼控系统、安防系统、巡检管理、电子巡更、门禁管理、变配电、给排水、防盗报警、消防报警、电梯监视、智能楼宇、物业管理、报修管理、维保管理、工单管理、物料管理、审批、租赁管理、楼宇管理、房产管理
  9. fx2n4ad模块中文手册_FX2N-4AD初级教程三菱FX2N-4AD用户指南手册 - 三菱
  10. npm安装vue报错:npm ERR! code ETIMEDOUT
  11. CentOS Linux操作系统
  12. Linux表示什么、如何使用、在哪里使用、解释、简单操作
  13. Linux 多点电容触摸屏
  14. tolower()函数
  15. 高等数学--微分定理及其应用(四)
  16. 无限极分类之查找家谱树
  17. C/C++如何给高效给数组赋值
  18. 获取IP地址信息的API合集
  19. 覆盖Laracon:在线会议会向内倾吗?
  20. 来自未来的交互设计。当电影中的一切变为现实,设计师要如何进化?

热门文章

  1. SQL SERVER 2012 只能识别20个CPU的问题
  2. 再探.NET的PE文件结构(安全篇)
  3. Skara 是研究JDK源代码的工具
  4. 【机器人】机械臂与动捕Nokov的深入了解
  5. Javascript第四章匿名函数第七课
  6. matlab聚合矩阵,c#和ILNumerics与Matlab中最有效的矩阵聚合方式
  7. mysql服务重启后不见了_太狗血!翔安已婚男出轨KTV服务员,致其怀孕后避而不见!情人上门讨要说法后原配妻子也......
  8. gsonformat插件_没用过这些IDEA插件?怪不得写代码头疼
  9. 移动端日期控件 mobiscroll
  10. Play Framework + ReactiveMongo 环境搭建