如何将选项-f SomeMakefile传递给子make?[这里是GNUMake网站]
当通过recipes中的一些如何将选项-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
$(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
选项并测试它们)。