使用make来安装库

时间:2018-06-08 18:28:38

标签: makefile

假设我有一个我想用make安装的库:

// library = foo

$ ls foo/
lib include

$ ls foo/lib
foo.h

$ ls foo/include
foo-1.2.a foo-1.2.o foo-1.2.etc

// makefile

.PHONY: install-foo
foo=/path/to/unzipped/foo
current_dir=$(shell pwd)
install-foo:
    - cd $(foo); ./configure --prefix=$(current_dir); make; make install

以上将始终安装

//makefile 2
.PHONY: install-foo reinstall-foo

foo=/path/to/foo
curdir=$(shell pwd)

install-foo: $(curdir)/foo/lib/foo.h $(curdir)/foo/include/foo-1.2.a etc.

$(curdir)/foo/lib/foo.h:
    make reinstall-foo

$(curdir)/foo/include/foo-1.2.a:
    make reinstall-foo

... (etc)


reinstall-foo:
    cd $(foo); ./configure --prefix=$(curdir)/foo; make; make install

这个将为库中的每个文件安装一次,但(之后),当其中一个文件丢失时,它将重新安装。

最后,我有一个bash方法,只有它是如此,因为它使用bash而不是make:

// within install-foo:
    -(not ((-f $(curdir)/foo/foo.h) and (-f $(curdir)/include/foo-1.2.a) and (etc.)) && really-install-foo

really-install-foo:
    ...etc.

问题是:什么是第一次安装的makefile设计,对make install-foo的任何后续调用只会导致foo一个,多个或全部安装库文件丢失了吗?

0 个答案:

没有答案