При написании хорошо продуманного Makefile, который сохраняет правильные зависимости и выполняет только необходимый минимум, если файл был изменен, кажется, что цель install:
часто упускается из виду. Чаще всего не цель установки выглядит примерно так:
TRG := /trg
BIN_TRG := $(TRG)/bin
ETC_TRG := $(TRG)/etc
BIN_FILES := b1 b2 b3
ETC_FILES := e1 e2 e3
install:
install $(BIN_FILES) $(BIN_TRG)
install $(ETC_FILES) $(ETC_TRG)
.PHONY: install
То есть фальшивая цель без какой-либо проверки зависимостей.
Проблема такого рода становится более серьезной, если вместо простой установки необходимо заполнить промежуточную область для подготовки двоичного пакета, такого как RPM-пакеты, или если следующий этап сборки зависит от этой промежуточной области. В этом случае дерево зависимостей дыр разрушается после этапа установки.
Возникает вопрос: Как лучше всего настроить правило установки, которое отслеживает зависимости?