2012-09-12 117 views
0

我有一個Makefile具有多個子項目並設置其構建依賴關係。用於在多個項目中安裝依賴關係Makefile

現在我想能夠有選擇地make install其中一些子項目,但在安裝中包括依賴關係。 我該怎麼做?

假設一個Makefile這樣的:

lib1: 

lib2: 

proj1: lib1 

proj2: lib2 

proj3: lib1 lib2 

install_%: $* 
    make -C $* install 

install: $(addprefix install_,$(SUBDIRS)) 

而且我希望能夠做到,命令行,像:

make install SUBDIRS=proj1 

make install SUBDIRS=proj3 

我的規則將嘗試構建和安裝「proj3」,但是:

  • 如果沒有構建任何庫,將會失敗。
  • 即使它找到了所需的庫,它們也不會沿着程序安裝。

任何幫助是值得歡迎的。

回答

1

在生成文件中的相關項目,包括依賴性的makefile和編寫規則來表達依賴性:

proj3/Makefile文件:

include ../lib1/Makefile 
include ../lib2/Makefile 

proj3: lib1 lib2 
    $(CC) .... 

install: proj3 install_lib1 install_lib2 
    cp ... 

LIB1/Makefile文件:

lib1: # .... 
    $(CC) .... 

install_lib1: # .... 
    cp ...