我正在编写一个主 makefile 来编译和安装多个基于 autoconf 的库,它们相互依赖。第一次一切正常。问题是:如果我正在单独处理这些库之一并执行“make && make install”前缀文件夹中的头文件(即使它们未被触及)。这会导致所有依赖库从头开始编译。
有没有办法避免不必要的重新编译而不侵入makefile?
也许解决方案有点晚了,但是
./configure INSTALL="install -p"
修复重新编译问题。此标志使 GNU install 将已安装文件的时间戳设置为已构建文件的时间戳。
您可以使用仅存在的哨兵文件来建立您的依赖关系图。例如。
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 是新的时,您才会进行依赖 liby 构建。
liby-built \
: liby.tar.gz libx-built \
; ...