make: принудительное использование правила - PullRequest
2 голосов
/ 23 ноября 2011

Тип make (Gnu Make) со следующими Makefile (при условии, что файлы foo.x и foo.y отсутствуют)

all: foo.z

foo.z: foo.x foo.y
  cat foo.x foo.y > foo.z

выдает сообщение об ошибке:

make: *** No rule to make target `foo.x', needed by `foo.z'.  Stop.

Но это Makefile:

all: foo.z

%.z: %.x %.y
  cat %.x %.y > %.z

выдаст это сообщение об ошибке:

make: *** No rule to make target `foo.z', needed by `all'.  Stop.

В первом случае применяется правило и определяется зависимость, если она отсутствует. Во втором случае правило считается не соответствующим, и это правило отсутствует.

Я хочу использовать второй Makefile (у меня есть много объектов *.z, которые нужно создать), но с сообщением об ошибке, как с первым Makefile. Мой make вывод записывается в журнал, а расширенное имя отсутствующих файлов поможет отладке.

Возможно ли это? Может быть, способ заставить правило использоваться?

Конечно, я не загружаю файл, это всего лишь пример ...

1 Ответ

1 голос
/ 26 января 2012

Я только что нашел:

all: foo.z

OBJ=foo.z

$(OBJ): %.z: %.x %.y
   cat %.x %.y > %.z

Одна потребность Правило статического шаблона . Удивительный макияж ...

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