我想運行「問題模式」的遞歸調用,並在非常特殊的場景中出現錯誤。makefile遞歸-q模式錯誤1
我使用的是MAKE 3.81,這已經在兩個完全獨立的環境中測試過了。我調用「make -q」,然後makefile調用「$(MAKE)-C sub/a /」,然後makefile調用「$(MAKE)-f ../../makefile.b」
該測試用例儘可能簡單。誰能告訴我,爲什麼我得到這個錯誤:
nachum:/home/nachum/makefile_bug[1497]$make -q
make -C sub/a
make[1]: Entering directory `/home/nachum/makefile_bug/sub/a'
make -f ../../makefile.b
make[1]: *** [b] Error 1
make[1]: Leaving directory `/home/nachum/makefile_bug/sub/a'
make: *** [a] Error 2
nachum:/home/nachum/makefile_bug[1498]$
下面是生成文件:
makefile:
a:
$(MAKE) -C sub/a
sub/a/makefile:
b:
$(MAKE) -f ../../makefile.b
makefile.b:
all:
echo hi
這個練習的要點是要能夠檢查是否子項目需要重新編譯,所以我必要時可以正確構建頂級項目。否則,我必須使用時間戳的一切。 (我以前使用過時間戳,但是我意識到這對其他事情造成了額外的困惑。)
這個問題有一些奇怪的解決方法。例如,如果一個(在生成文件)的配方具有調用$以上的額外線(MAKE),即:
makefile:
a:
@echo hi
$(MAKE) -C sub/a
的問題消失了,而依賴關係(在我的全測試用例)仍能正常工作。也直接使用make似乎改變了行爲(而不是$(MAKE))。
任何幫助,將不勝感激。 謝謝, Nachum
聽起來像一個錯誤? – nachum 2013-03-24 19:10:46
可能有可能是原因,我們還需要探討:) – 2013-03-25 11:08:52