Bezdepbonusu7Программирование: статьи и ответы

Вопрос

GNU делает взаимозависимые предварительные зависимости

Автор вопроса: WildernessОтветов: 1

Я пытаюсь написать правило make с предварительными зависимостями, которые взаимосвязаны.

a: b $(FILES)

b: $(FILE_1)
  $(eval FILES := some_function_using_file($(FILE_1)))

$(FILES):
  do something ...

По сути, мне нужно $(FILE_1), чтобы получить $(FILES). Когда make сначала читает файл, это правило ниже не существует, потому что $(FILES) изначально не определено, но оценивается динамически.

$(FILES):
  do something ...

Есть ли способ заставить это работать? Я хочу динамически создать $(FILES), а затем запустить его правило.

dependenciesmakefilegnu

Ответы

Ответ 1 · toster-cx

Цели оцениваются до запуска любой из них. Лучше всего создать список до того, как это произойдет.

FILES = $(shell ls) new.txt

all: $(FILES)

$(FILES):
  echo $@

Если вы действительно в отчаянии, вы можете сгенерировать другой make-файл внутри make-файла и вызвать другую копию make.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы