我正在编写一个主makefile来编译和安装多个基于autoconf的库,它们相互依赖。一切顺利,一切顺利。问题是:如果我单独处理其中一个库并执行“make&& make install”,前缀文件夹中的头文件将被覆盖(即使它们未被触及)。这会导致所有依赖库从头开始编译。
有没有办法在不侵入makefile的情况下避免不必要的重新编译?
答案 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 \
; ...