定义命令包-算法引论:一种创造性方法---高清版

时间:2024-06-23 16:09:21
【文件属性】:

文件名称:定义命令包-算法引论:一种创造性方法---高清版

文件大小:964KB

文件格式:PDF

更新时间:2024-06-23 16:09:21

Makefile 陈皓

五、定义命令包 如果 Makefile 中出现一些相同命令序列,那么我们可以为这些相同的命令序列定义一 个变量。定义这种命令序列的语法以“define”开始,以“endef”结束,如: define run-yacc yacc $(firstword $^) mv y.tab.c $@ endef 这里,“run-yacc”是这个命令包的名字,其不要和 Makefile 中的变量重名。在 “define”和“endef”中的两行就是命令序列。这个命令包中的第一个命令是运行 Yacc 程序,因为 Yacc 程序总是生成“y.tab.c”的文件,所以第二行的命令就是把这个文件改改 名字。还是把这个命令包放到一个示例中来看看吧。 foo.c : foo.y $(run-yacc) 我们可以看见,要使用这个命令包,我们就好像使用变量一样。在这个命令包的使用中, 命令包“run-yacc”中的“$^”就是“foo.y”,“$@”就是“foo.c”(有关这种以“$” 开头的特殊变量,我们会在后面介绍),make 在执行命令包时,命令包中的每个命令会被依 次独立执行。 第七部分 使用变量 在 Makefile 中的定义的变量,就像是 C/C++语言中的宏一样,他代表了一个文本字串, 在 Makefile 中执行的时候其会自动原模原样地展开在所使用的地方。其与 C/C++所不同的 是,你可以在 Makefile 中改变其值。在 Makefile 中,变量可以使用在“目标”,“依赖目 标”,“命令”或是 Makefile 的其它部分中。 变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:”、 第 30 页共 78 页 2005 年 10 月 14 日整理:祝冬华


网友评论