2015-09-07 61 views
0

當通過食譜中的一些$(MAKE) foo遞歸調用時,GNUMake傳遞它所調用的一些選項,但不是全部。特別是它不會傳遞一個-f SomeMakefile選項。見section 5.7.3 of manual如何將選項-f SomeMakefile傳遞給子版本? [這裏是GNUMake]

我怎樣才能找到make是否與一些-f選項調用,我怎樣才能把它傳遞給子製造?

爲了使問題具體,這裏是我的SomeMakefile包含:

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

的問題是,如何使foo.slwSomeMakefile定義和遞歸make不會使用它。

+0

你可以把Makefiles的各個部分放在這裏以及你如何調用命令make? – Oz123

+0

因爲換行結束了評論,所以我無法將Makefiles的各個部分放入此註釋中!將在原來的問題中做到這一點。 – phs

回答

1

您可以從MAKEFILE_LIST變量中獲得makefile的名稱。例如:

${MAKE} -f $(lastword $(MAKEFILE_LIST)) 

如果你的makefile包含其他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} 

或者,如果你知道你的Makefile總是第一個通過make讀取,然後它將在MAKEFILE_LIST的前面,例如$(firstword ${MAKEFILE_LIST})

+0

謝謝,我不知道這個變量。使用它可能需要一些調整,因爲我的'SomeMakefile'具有'include's :-( – phs

+0

@phs爲您的案例添加了更多的細節,包含多個包含。 –

+0

@ME:這很好,解決了我的問題。仍然對識別'-f'選項並測試它們感到好奇)。 – phs