Make install вызывает перекомпиляцию

Я пишу основной make-файл для компиляции и установки нескольких библиотек на основе autoconf, которые зависят друг от друга. Все работает хорошо с первого раза. Проблема заключается в следующем: если я работаю с одной из этих библиотек по отдельности и не выполняю перезапись файлов заголовка "make && make install" в папке префикса (даже если они не затронуты). Это приводит к компиляции всех зависимых библиотек с нуля.

Есть ли способ избежать ненужных перекомпиляций без взлома make-файлов?

2 ответа

Решение

Может быть, решение немного поздно, но

./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 $@

Тогда вы сделаете зависимую сборку liby только тогда, когда libx-build является новым.

liby-built \
  : liby.tar.gz libx-built \
  ; ...
Другие вопросы по тегам