как получить конкретную зависимость из списка зависимостей для цели - PullRequest
3 голосов
/ 06 апреля 2011

Предположим, у меня есть следующее правило в Makefile:

%.foo: %.bar %.spam %.bot<tab> echo "hello1" > $<

как я могу также отобразить "hello2" во второй зависимости (но не в файле .bot), то есть в файле .spam?Спасибо

Ответы [ 2 ]

6 голосов
/ 06 апреля 2011
%.foo: %.bar %.spam %.bot
    echo "hello1" > $<    
    echo hello2 > $(word 2,$^)

(Обратите внимание, что > перезаписывает, по крайней мере, в известных мне оболочках, что делает все упражнение довольно бессмысленным. Чтобы добавить, используйте >>.)

1 голос
/ 06 апреля 2011

То, что вы спрашиваете, противоречит нормальной работе make: правило должно изменять файлы, названные в слева двоеточия, а не файлы в справа издвоеточиеВы не дали здесь большого контекста, поэтому трудно дать вам более конкретный совет, чем этот.

Что касается конкретного вопроса, который вы задали, вы можете использовать что-то вроде этого:

%.foo: %.bar %.spam %.bot
    echo "hello1" > $<
    echo "hello2" > $*.spam

При этом используется автоматическая переменная $*, которая определяется как часть имени файла, которая соответствует символу % в правиле шаблона.

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