如何将选项-f SomeMakefile传递给子make?[这里是GNUMake网站]

如何将选项-f SomeMakefile传递给子make?[这里是GNUMake网站],makefile,Makefile,当通过recipes中的一些$(MAKE)foo递归调用自身时,GNUMake传递了调用它时使用的一些选项,但不是所有选项。特别是,它不会传递-f SomeMakefile选项。看 如何查找是否使用一些-f选项调用了make,以及如何将其传递给子make 为了使问题具体化,以下是我的SomeMakefile所包含的内容: %.pdf : %.tex pdflatex $(PDFLATEXFLAGS) $* @if [ -f $*.log ] ; then $(MAKE) --si

当通过recipes中的一些
$(MAKE)foo
递归调用自身时,
GNUMake
传递了调用它时使用的一些选项,但不是所有选项。特别是,它不会传递
-f SomeMakefile
选项。看

如何查找是否使用一些
-f
选项调用了
make
,以及如何将其传递给子make

为了使问题具体化,以下是我的
SomeMakefile
所包含的内容:

%.pdf : %.tex
    pdflatex $(PDFLATEXFLAGS) $*
    @if [ -f $*.log ] ; then $(MAKE) --silent $*.slw; fi

问题是如何生成
foo.slw
是在
SomeMakefile
中定义的,递归的
make
不会使用它。

您可以从变量中获取生成文件的名称。例如:

${MAKE} -f $(lastword $(MAKEFILE_LIST))
如果makefile包含其他makefiles,您可能希望将makefile的名称提前存储到立即分配的变量中,例如:

# Somewhere at the top of your makefile, before any includes
this_makefile := $(lastword ${MAKEFILE_LIST})

# and use it later
some_rule :
    ${MAKE} -f ${this_makefile}

或者,如果您知道make总是第一个读取makefile,那么它将位于
makefile\u列表
的前面,例如
$(firstword${makefile\u列表})

你能把makefile的部分放在这里吗?你如何调用make命令?我不能把makefile的部分放在这个注释中,因为换行符结束了注释!!!将在原始问题中执行。谢谢,我不知道这个变量。使用它可能需要一些调整,因为我的
SomeMakefile
include
s:-(@phs为您的案例添加了更多关于多个include的详细信息。@M.E:这很好,解决了我的问题。(但我仍然很好奇如何识别
-f
选项并测试它们)。