Установите и проверьте наличие пустого var внутри цели

#makefile #gnu-make

Вопрос:

Я создал цель make , которая извлекает список файлов git ls-files и передает их в phpcs утилиту стандартов кодирования.

Проблема в том, что я не хочу запускать его, если файлы не возвращаются. (потому что затем он пытается проанализировать всю кодовую базу)

 phpcs:
    FS=$(git ls-files -om --exclude-standard '*.php'); 
    vendor/bin/phpcs --encoding=utf-8 --extensions=php $FS
 

Как бы я вышел, если $FS (который задан в первой строке) пуст?

Я использую стандартную gnu-make версию, которая поставляется с OSX. ( 3.8.1 )

Ответ №1:

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

Вы можете сделать что-то вроде этого:

 phpcs:
        FS=$(git ls-files -om --exclude-standard '*.php'); 
        test -z "$FS" || vendor/bin/phpcs --encoding=utf-8 --extensions=php $FS
 

пс. Нет такого выпуска, как GNU make 3.8.1. Я полагаю, вы имеете в виду GNU make 3.81.

Комментарии:

1. Понял, спасибо за объяснение. Я подтвердил, что это действительно работает. Кроме того, вы правы… Я имел в виду GNU make 3.81 .