2013-05-22 39 views
0

我有這樣的make如何找到模塊的順序?

MODULES = ADW AEG DLG FDUfinance ODD PRI SPPA ADFGcommon PYMT LUR LBD \ 
      FAA PPTP COLLINT COR ADFG COA COLLINTtestRecord COLLINTtestScenario \ 
      LFPL LFP 
include $(CORE)/BUILD/package.mk 

內容的生成文件當我給make怎麼做它找到的順序ADW,AEG ..並建立一個接一個?

+1

無法回答這個問題。據推測,'package.mk'文件將包含一些制定規則,描述將如何構建'MODULES'的內容並定義順序。 – MadScientist

+1

部分答案 - 它「找到ADW,AEG ..」的順序,因爲這是明確指定的 - 它與「MODULES」變量中指定的順序一致。它如何構建它們中的每一個,但@MadScientist是對的 - 沒有'package.mk'的內容和其他可能的東西,沒有辦法告訴...... – twalberg

回答

1

當我給了它如何找到命令ADW,AEG ..並且一個接一個地建立?

嗯,好吧,但不完全是這樣.....我完全同意@madscientist和@twalberg觀察。

看看例子生成文件:

Kaizen ~/make_prac $ cat mk.name 
## make to accept name and display hello name 
arg1="" ; 

.PHONY : name \ 
    hello 

    hello : name 
     echo "hello $(arg1)" ; 

    name : 
      echo "name given is : $(arg1)" ; 

這裏一旦make讀入生成文件(描述符文件),它是那麼能夠形成依賴關係樹....喜歡什麼依賴/需要什麼。所以在內部它使一個具有這樣的事情...

hello <-- name <-- no dep 
    name <-- no dep 

這是基於生成文件的內容 - 規則/目標(你好和名稱在此規則)和它們的依賴關係列表(文件/目標後:)

所以從線

hello : name 
      echo "hello $(arg1)" ; 

它可能意味着建立你好,目標名稱必須是可用的目標/打造第一。同樣,它會遍歷所提及的每個目標及其依賴列表,如上所述,在此過程中創建一個「整體構建」鏈(您也可以將其稱爲依賴樹)。

執行它總是涉及到構建鏈,建設目標本身

例子的輸出之前建立的依賴關係的目標(如果他們是過時了):

Kaizen ~/make_prac $ make -f mk.name arg1="kaizen" ; 
    echo "name given is : kaizen" ; 
    name given is : kaizen 
    echo "hello kaizen" ; 
    hello kaizen 

現在回到你的問題:

模塊= ADW AEG DLG FDUfinance ODD PRI SPPA ADFGcommon PYMT LUR LBD \ FAA PPTP COLLINT COR ADFG COA COLLINTtestRecord COLLINTtestScenario \ LFPL LF P include $(CORE)/BUILD/package.mk

這裏模塊不是目標,而是一個變量,我想在你的makefile下面的某個地方被替換成一個規則..... chk發生$( MODULE)

但是沒有準確的方法可以說ADW會在AEG之前生成....就像在makefile中一樣,如果規則可能會將AEG聲明爲目標ADW的依賴項,那麼構建ADW make將不得不首先構建AEG,從而增加其構建鏈ADW < - AEG。

因此扭轉了你的假設......這是否有助於你理解鏈接過程?

如果你仍然有點糊塗......訪問鏈接http://www.jfranken.de/homepages/johannes/vortraege/make_inhalt.en.html

這應該說明你在大約5-7分鐘,大部分概念...

希望這有助於!