Что если целью make (или build) является наличие определенного содержимого в файле - PullRequest
0 голосов
/ 04 мая 2011

Типичные цели сборки для make и других систем сборки - это файл или каталог.Я создаю систему, аналогичную BSD-портам для пакетов emacs .

Я только что понял, что моя цель для каждого пакета была не совсем точной - дело не в том, что файл edan.el должен быть новее, чем его предпосылки.Он должен быть новее, чем предварительные требования, и он должен содержать

(provide '[% pkg %])

, где pkg - это пакет, который был только что загружен, распакован и скомпилирован байтовым кодом.

Есть ли способсделать это с помощью make?Любая другая система сборки справляется с подобными вещами?

1 Ответ

0 голосов
/ 11 мая 2011

Это всегда тот случай, когда вы хотите, чтобы цель содержала правильные данные. Например, вы не хотите, чтобы foo.o не имел никакого отношения к содержимому foo.c. Временные метки являются просто прокси для этого. Вы должны верить, что инструменты действительно делают правильные вещи.

Похоже, реальное осложнение заключается в том, что зависимости являются динамическими. Файл edan.el зависит от списка всех установленных и управляемых на данный момент пакетов, которые можно изменить. Но вы, конечно, можете представить эти данные в виде файла. Я ожидаю, что у вас уже есть файл со списком активных пакетов.

(Возможно, вы также захотите зависеть от реальных пакетов. Вы должны быть в состоянии написать сценарий для преобразования этих данных в зависимый файл, который включается в основной Makefile.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...