LINUX.ORG.RU

скрипт внутри цели в makefile

 , ,


0

1

Здравствуйте, почему эхо пустой внутри цели мейкфайла?

rule:
        @cd $(DIRECTORY)/$(PacketName) && \
        pwd && \
        echo "$(find . -name "*.deb")"

как это исправить? в обычном скрипте все отрабатывает на ура...

$(shell find . -name "*.deb")
будет выполнять уже совершенно не то

Потому что $(...) - обрабатывается make, а не sh, для вызова sh и предназначен $(shell ...)

vodz ★★★★★ ()
Ответ на: комментарий от vodz

хм, ну так shell вызывается же при старте цели... т.е. в моем случае до перехода в директорию... как сделать чтобы вызывалось после перехода в директорию? нужно то на самом деле вот это:

rule:
      @cd $(DIRECTORY)/$(PACKET) && \
      pwd && \
      if [ -z "$(find . -name "*.deb")" ]; then \
           echo ERROR; \
      fi
если сюда засобачить $(shell find . -name «*.deb») то будет совершенно не то, что нужно

xperious ★★ ()
Последнее исправление: xperious (всего исправлений: 1)
Ответ на: комментарий от xperious

ну можно, конечно, так:

rule:
      @cd $(DIRECTORY)/$(PACKET) && \
      pwd && \
      if [ -z "$(find $(DIRECTORY)/$(PACKET) -name "*.deb")" ]; then \
           echo ERROR; \
      fi
но как-то не универсально это

xperious ★★ ()
Ответ на: комментарий от xperious

хм, ну так shell вызывается же при старте цели...

Вызываются команды с аргументами, которые генерятся $(синтаксисом). Обычно сложные вещи делаются в виде вызовов скриптов, типа там install.sh и тому подобное. И вообще, у find вы же можете указать не "." а $(DIRECTORY)/$(PACKET)

vodz ★★★★★ ()

Доллар заэкранируй или `` используй.

$$(find ..) `find ..`

anonymous ()
Ответ на: комментарий от anonymous

хех, прокатило, а что за треш это? чет я с ним не встречался

xperious ★★ ()
Ответ на: комментарий от xperious

Где треш? И make и bash обрабатывают $что-то. Чтобы $ дошёл до bash, надо предотвратить его использование make. $$ заменяется на $.

xaizek ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.