我有一個棘手的問題與gmake,當我從父目錄生成,有些東西是不同的,並沒有建立所有.o(s)它需要和失敗,但如果我cd到該目錄,並做一個讓它建立良好。我怎樣才能捕獲兩個目錄之間的GNUMake差異
我該如何讓GNUmake告訴我這兩次運行之間的區別?在父項中必須有一些make變量設置來破壞孩子,但我需要幫助弄清楚如何追蹤它們。
我有一個棘手的問題與gmake,當我從父目錄生成,有些東西是不同的,並沒有建立所有.o(s)它需要和失敗,但如果我cd到該目錄,並做一個讓它建立良好。我怎樣才能捕獲兩個目錄之間的GNUMake差異
我該如何讓GNUmake告訴我這兩次運行之間的區別?在父項中必須有一些make變量設置來破壞孩子,但我需要幫助弄清楚如何追蹤它們。
如果從父目錄運行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非常擅長使用那裏的東西來建立文件這裏,但不是相反,所以如果你不小心,它可能會失去中間文件的跟蹤。