Скажем, у меня есть простой Makefile.
a1: some_script b
some_command $< b
a2: some_other_script b
some_command $< b
b: c
touch $@
c:
touch $@
Где b
- это файл, похожий на базу данных, который требуется для создания a1
и a2
.Однако каждый раз при обращении к b
(даже если не изменяется) дата изменения изменяется.Следовательно, каждый раз, когда выполняется правило для a2
, Make считает, что a1
необходимо переделать, потому что использовалась база данных b
(даже если c
не изменился и b
остался прежним).Я хочу обновить только a1
и a2
, если c
новее (и, следовательно, b
нуждается в фактической перекомпиляции).
Я мог бы просто иметь a1
и a2
зависит от c напрямую, но это искажает истинный рабочий процесс.
Я не хочу удалять b
, поэтому использование его в качестве промежуточного файла не будет работать.
У меня естьтакже пытался включить b
как зависимость только для заказа, но a1
и a2
никогда не будут пересозданы, если их не принудить.
Примечания. Makefile предназначен для автоматизации выполнения сценариев и отслеживания зависимостей для исследовательского проекта (а не программного проекта).Возможно, Make не подходит для этого.Файлы в виде базы данных - это GeoPackages.