将文件参数传递给子项



条件:

  • 生成文件将传递给 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 的最顶部查询时,变量的值才可靠,在任何包含之前。

最新更新