2012-09-12 71 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 ...