2010-06-16 56 views
1

我有一個棘手的問題與gmake,當我從父目錄生成,有些東西是不同的,並沒有建立所有.o(s)它需要和失敗,但如果我cd到該目錄,並做一個讓它建立良好。我怎樣才能捕獲兩個目錄之間的GNUMake差異

我該如何讓GNUmake告訴我這兩次運行之間的區別?在父項中必須有一些make變量設置來破壞孩子,但我需要幫助弄清楚如何追蹤它們。

回答

1

如果從父目錄運行make未能生成foo.o,請嘗試make foo.o。如果失敗,則嘗試在兩個目錄中運行make -n foo.o(至打印命令,而不是執行他們)以查看它有什麼不同。如果成功,那麼它甚至不試圖從父目錄運行時創建foo.o; make -n可能會流露出一些光芒,並且作爲最後的手段make -d會給你一個關於決策過程的信息,爲什麼它正在做它正在做的事情。

這裏有一個方便的技巧來查看變量的值。將這個規則在Makefile:

show_%: 
    @echo [email protected] is $($*) 

現在你可以運行make show_FOO,它會告訴你變量FOO的價值。

最後,你確定你知道你在哪裏建立你的.o文件嗎? Make非常擅長使用那裏的東西來建立文件這裏,但不是相反,所以如果你不小心,它可能會失去中間文件的跟蹤。

相關問題