条件:
- 生成文件将传递给 make:
make -f ../makefile hi
hi
目标也调用make
我需要一种方法将值从 -f
传播到在 hi
中运行的 sub-make 命令。
bye:
echo 'whatever'
hi:
${MAKE} bye
假设当前目录中没有默认的生成文件(大概是你通过的原因 -f ../makefile
) 那么如果您调用,您的示例../makefile
将按原样工作 make
喜欢:
$ make MAKEFILES=../makefile hi
make bye
make[1]: Entering directory '/home/imk/develop/scrap'
echo 'whatever'
whatever
make[1]: Leaving directory '/home/imk/develop/scrap'
参见 3.4 变量 MAKEFILES
如果当前目录中有默认的生成文件,则此方法将导致make
在具有默认生成文件后读取阅读../makefile
,结果令人不快。在这种情况下,更喜欢@Dummy00001的答案。
我知道的唯一可能性是使用 MAKEFILE_LIST
变量:
CURR_MAKEFILE:=$(lastword $(MAKEFILE_LIST))
bye:
echo 'whatever'
hi:
+$(MAKE) -f $(CURR_MAKEFILE) bye
但请注意,正如官方文档中所写的那样,该变量记录了所有解析的生成文件,包括include
的 makefile。只有在 makefile 的最顶部查询时,变量的值才可靠,在任何包含之前。