2
我試圖編譯兩個不同的文件集合的單個makefile文件。這是可行的嗎?makefile特定於目標的文件
我試了一下,到目前爲止是:
target1: OBJ = foo1.o foo2.o
target1: application
target2: OBJ = foo3.o foo4.o
target2: application
application: $(OBJ)
$(LD) $(OBJ)
什麼情況是,LD
被稱爲使用正確的參數,但要永遠不會實際檢查因此依賴關係編譯.c文件到.O是從來沒有的隱含規則執行連接器失敗:
ld: cannot find foo1.o: No such file or directory
ld: cannot find foo2.o: No such file or directory
什麼是正確的方法來做到這一點?
你是對的。更正了產生錯誤的最小代碼 – felknight
特定於目標的變量在*配方*中可用並且在同一目標的其他特定於目標的分配中可用。但是它們在先決條件中不可用(因爲它們可能依賴於直到確定先決條件才具有價值的自動變量)。也許有辦法做到這一點,但似乎傳統的明確的前提風格更簡單。也就是說,如果你從'target1:OBJ = foo1.o foo2.o'中刪除了'OBJ =',你最終會得到同樣可維護的'target1:foo1.o foo2.o'。 :) – rici
@EtanReisner:是什麼讓你認爲它有先決條件?我用makefile測試了這個:'target:prereq = foo'' target:$(prereq)''\ techo $ ^'。如果目標特定變量在先決條件中可用,我希望看到'foo'。但不是。 (無先決條件的目標食譜是無條件執行的,不是?) – rici