make install导致重新编译

时间:2010-07-12 20:38:56

标签: makefile autoconf recompile

我正在编写一个主makefile来编译和安装多个基于autoconf的库,它们相互依赖。一切顺利,一切顺利。问题是:如果我单独处理其中一个库并执行“make&& make install”,前缀文件夹中的头文件将被覆盖(即使它们未被触及)。这会导致所有依赖库从头开始编译。

有没有办法在不侵入makefile的情况下避免不必要的重新编译?

2 个答案:

答案 0 :(得分:1)

也许解决方案有点晚了,但是

./configure INSTALL="install -p"

修复了重新编译问题。此标志使GNU install将已安装文件的时间戳设置为构建文件的时间戳。

答案 1 :(得分:0)

您可以使用仅存在的sentinel文件来建立您的依赖关系图。例如。

prefix := /usr/local

.PHONY: all
all: libx-built

libx-built \
  : libx.tar.gz \
  ; tar xzvf $@ \
  && cd libx \
  && ./configure --prefix=$(prefix) \
  && make && make install \
  && touch $@

然后,只有当libx-built是new时才会创建依赖的liby构建。

liby-built \
  : liby.tar.gz libx-built \
  ; ...