GNU-makefle (三) 规则语法、文件查找、伪目标

参考链接:http://blog.csdn.net/haoel/article/details/2889

当命令和依赖关系描述在同一行时,可以使用分号 分隔。

当命令太长时,也可以用反斜杠 \ 来分隔成多行,分隔出的行首有没有tab都可以(空格更无所谓了)。

在指定文件目录时,可以用~来表示系统home目录,因为make会以shell来执行。

VPATH Makefile文件中的特殊变量。它指定make可以去哪些目录找寻依赖文件和目标文件。

默认不定义它,则在当前目录找,多目录用冒号(:)分隔

vpath是一个命令,用于查找匹配目录。用%来匹配文件名中的零个或若干字符

vpath pattern directories   在目录中查找与模式匹配的文件

vpath pattern 清除当前模式的查找目录

vpath      清除所有vpath定义的查找目录

mymk = ~/Desktop/b.mkf
-include $(mymk)
edit : $(objs)
		cc -o edit $(objs)
#VPATH = srcs:headers
vpath %.c srcs:headers
vpath %.h srcs:headers
#vpath %
#vpath

 main.o:
 kbd.o:
 command.o:
 display.o:
 insert.o:
 search.o:
 utils.o: ; cc -c utils.c
 files.o: ; cc -c -g  				        files.c

 .PHONY : clean
 clean :
#		-rm edit $(objs)
		-rm *.o edit

伪目标作 首目标

#定义了一个伪目标all,为makefie的首目标。前面说,第1个首目标就是makefile生成的执行目标,而这里是伪目标,所以不会生成执行文件。
#   直接make all  或者 make 即可。这样会生成三个执行文件 AA BB CC

all : AA BB CC
 .PHONY : all

    AA : A.o command.o
		cc -o AA A.o command.o

    BB : B.o
		cc -o BB B.o

    CC : C.o utils.o
		cc -o CC C.o utils.o

伪目标 依赖 伪目标

#cleanall 依赖(包含)了 cleanobj cleandiff
 .PHONY: cleanall cleanobj cleandiff

    cleanall : cleanobj cleandiff
			-rm AA BB CC edit

    cleanobj :
			-rm *.o

    cleandiff :
			-rm *.diff
时间: 2024-12-16 15:01:39

GNU-makefle (三) 规则语法、文件查找、伪目标的相关文章

Makefile规则③规则语法、依赖、通配符、目录搜寻、目标

规则语法 通常规则的语法格式如下: TARGETS : PREREQUISITES COMMAND ... 或者: TARGETS : PREREQUISITES ; COMMAND COMMAND ... 规则中" TARGETS"可以是空格分开的多个文件名,也可以是一个标签(例如:执行清空的" clean")." TARGETS"的文件名可以使用通配符,格式" A(M)"表示档案文件( Linux下的静态库.a文件)的成员

Linux 系统之文件查找工具--- locate、 find详解

一.学习Linux为什么要学习文件查找工具? 作为Linux爱好者,或者Linux运维人员经常会遇到要查找某个或者某一类文件的问题,但对于"一切皆文件"的Linux系统来说,如何能够在成千上万的文件中快速精确的定位到我们所需的文件,对我们来说是至关重要的.因此,熟练掌握并运用Linux系统下的文件查找命令是我们快速定位的关键. 本文着重介绍Linux环境下的locate.find文件查找工具 二.文件查找工具locate使用详解 2.1.locate - find files by n

Makefile伪目标

本节我们讨论一个Makefile中的一个重要的特殊目标:伪目标. 伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们也可以将一个伪目标称为标签.使用伪目标有两点原因: 1. 避免在我们的Makefile中定义的只执行命令的的目标(此目标的目的为了执行执行一系列命令,而不需要创建这个目标)和工作目录下的实际文件出现名字冲突. 2. 提高执行make时的效率,特别是对于一个大型的工程来说,编译的效率也许你同样关心. 以下就这两个问题我

linux之Makefile 编写、规则、伪目标

什么是Makefile?首先,make是一个工具程序(Utility software),是一种控制编译或者重复编译软件的工具:make可以自动管理软件编译的内容.方式和时机从而使程序员能够把精力集中在编写代码上.那make怎样工作呢?其实make是通过makefile文件实现的.makefile是一个文本形式的数据库文件.其中包含一些规则,这些规则告诉make需要编译哪些文件.怎样编译这些文件以及在什么样的条件下去编译. 关于Makefile的基本规则: target: dependency

1-11 RHLE7-重定向和文件查找

在Linux 系统中,一切皆设备Linux系统中使用文件来描述各种硬件,设备资源等例如:以前学过的硬盘和分区,光盘等设备文件sda1   sr0============================================ 1.Linux中的重定向的作用重定向的含义:在实际的Linux维护中,可以改变输入输出内容的方向.不使用默认的标准输入输出设备,即重定向. 当我们在调试或安装时,希望将一些不必要的信息不显示出来,或者是需要将调试信息保存下来时,我们可以使用重点向  >(覆盖输出),

文件查找工具locate与find

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● locate用法 ● 使用find基于文件属性进行查找 locate与find简介: locate与find都是文件查找工具(区别与grep等文本查找工具),尤其是find,可根据文件的诸多属性(如文件大小.属主属组.权限信息.修改时间等),对文件进行实时查找 locate: 1.查找默认数据库文件/var/lib/mlocate/mlocate.db,所以查找速度快,非实时,每天

8.30 vim编辑器 文件查找 文件系统 作业(练习)

Vim编辑器: 全屏幕的编辑器:VIM vi: visual interface sed:行编辑器 vi, vi iMproved vim: 模式化: 编辑模式:命令模式 输入模式: 末行模式: 编辑模式 --> 输入模式: i: insert, a:append, o:new line, I: 行首 A:行尾 O:上方新建行 输入模式 --> 编辑模式: ESC 编辑模式 --> 末行模式: : 末行模式 --> 编辑模式 ESC 1.总结文本编辑工具vim的使用方法: 打开vi

GCC、头文件查找顺序总结

GCC笔记 The History of GCC -------------------------------------------------------------------------------- 1984年,Richard Stallman发起了自由软件运动,GNU (Gnu's Not Unix)项目应运而生,3年后,最初版 的GCC横空出世,成为第一款可移植.可优化.支持ANSI C的开源C编译器. GCC最初的全名是GNU C Compiler,之后,随着GCC支持的语言越

续写vim,shell脚本基础编辑,read命令,if与case判断语句,文件查找方式,压缩与解压,

一. Vim续写 ?1.命令扩展模式的位置定界 ??起始位置 cmd 终止位置???Cmd:????y复制????d删除????Gu变大写????gu变小写??例如:0y$命令意味着:????0 先到行头????Y 从这里开始拷贝????$ 拷贝到本行行尾最后一个字符????Ye 从当前位置拷贝到本单词的最后一个字符 ?2.扩展命令模式:地址定界 ? ?# 具体第#行,? ?#1,#2 从开头数第#1行到第#2行? ?#1,+#2 从开头数的第#1行到从第#1行开始数的第#2行? ? ?例:2,