2015-06-29 62 views
4

是否有輸出「預處理」的makefile的選項,相當於GCC的-E選項?GNU Makefile「預處理器」?

我有一個由幾十個模塊層次組成的項目,每個模塊都有它的makefile。該構建是從主makefile中調用的。主master文件包含包含,變量定義,命令行選項因變量等。

所以,基本上,我正在尋找已處理的makefile,包括所有替換。

+0

在這種情況下make -n沒有用嗎? –

+0

@EugeniuRosca - 看起來像這個選項不會創建我要找的結果。 – ysap

回答

3

不是我所知道的。最接近你的是make -qp(或類似的)的輸出,它會將make數據庫轉儲給你。

這個請求的部分問題是很多替換/ etc。發生在目標被處理的情況下,並且目標列表不一定是已知的,而實際上並未嘗試構建(至少在某種程度上),因此不一定可能完全展開/ etc。一個makefile就地。

make -d輸出對於某些與make如何處理makefile但不直接包含makefile內容有關的附帶信息也很有用。

Remake也可能能夠提供一些額外的有用信息。

如果您正在查找一些組裝/ etc的計算值。全球變量然後this埃裏克梅爾斯基博客文章可能會非常有幫助。

tl; dr它將這樣一個目標添加到Makefile中(儘管博客文章中有更多的魔力,所以我建議閱讀它)。

print-%: 
    @echo '$*=$($*)' 
    @echo ' origin = $(origin $*)' 
    @echo ' flavor = $(flavor $*)' 
    @echo ' value = $(value $*)' 

儘管在個人使用我更換了的東西第一線更多類似這樣的

@echo '$*=$(subst ','\'',$($*))' 

保持正確結果的引用。

+0

謝謝。有很多信息(比3000行輸出更多),並且需要一些挖掘,但是我想如果花費足夠的時間,就可以計算出所需的信息。 – ysap

+0

@ysap什麼,具體來說,你試圖找出?可能有更簡單的方法來做到這一點。 (實際上,我會添加一個經常用到的方法,我現在只記得這個答案。) –

+0

基本上,爲了創建基於IDE(Eclipse)的項目,需要對項目進行逆向工程。有許多模塊,製作了幾個庫,許多模塊沒有編譯/鏈接到最終的二進制文件中。在其中一個常用makefile模塊中有模塊選擇變量(開關)。 – ysap