Makefile 变量MAKEFILE_LIST

本是古典 何须时尚 2022-12-17 12:59 426阅读 0赞

make程序在读取多个makefile文件时,包括由环境变量“MAKEFILES”指定、命令行指定、当前工作下的默认的以及使用指示符“include”指定包含的,在这些文件进行解析执行之前make读取的文件名将会被自动依次追加到变量“MAKEFILE_LIST”的定义域中。

这样我们就可以通过测试此变量的最后一个字来获取当前make程序正在处理的makefile文件名。具体的说就是在一个makefile文件中如果使用指示符“include”包含另一个文件之后,变量“MAKEFILE_LIST”的最后一个字只可能是指示符“include”指定所要包含的那个文件的名字。一个makefile的内容如下:

  1. name1 := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
  2. include inc.mk
  3. name2 := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
  4. all:
  5. @echo name1 = $(name1)
  6. @echo name2 = $(name2)

执行 make,则看到的将是如下的结果:

  1. name1 = Makefile
  2. name2 = inc.mk

发表评论

表情:
评论列表 (有 0 条评论,426人围观)

还没有评论,来说两句吧...

相关阅读

    相关 6.Makefile自动化变量

    关于自动化变量可以理解为由 Makefile 自动产生的变量。在模式规则中,规则的目标和依赖的文件名代表了一类的文件。规则的命令是对所有这一类文件的描述。我们在 Makefil