make

makefile Как последовательно выполнить команды ?

В Makefile заданы команды:

create: ${mess1:mess2} mess3
mess1:
	@echo "Команда 1 выполнена"
mess2:
	@echo "Команда 2 выполнена"
mess3:
	@echo "Команда 3 выполнена"

Когда запускаю команду из консоли

make create mess1

получаю сообщение

Команда 3 выполнена
Команда 1 выполнена

Ожидается, что команда mess3 всегда должна выводить сообщение после выполнения предыдущей команды. Например, при выполнении из консоли

make create mess1

должно быть

Makefile Вызов других make команд ПЕРЕД данной

Используйте зависимости (см. раздел об общей структуру), например:

show_vasya:
	@echo  "Вася"

show_message_privet: 
	@echo  "Привет!"

command2: show_message_privet show_vasya
	@echo  "Это будет после привета И Васи."

Теперь, если мы выполним в терминале, в той же папке, где лежит мейкфайл:

make command2

то цели выполнятся в таком порядке

makefile Entering directory Скрыть отображение сообщений, тихий режим

Ситуация

make[1]: Entering directory

Проблема возникает при выполнии make команды из другой make команды (но решение должно быть актуальным и при выполнении напрямую из терминала)

Решение

Чтобы убрать сообщение о входе в директорию, в мейкфайле надо написать команду с использование флага -s:

test.me:
	make -s app.show

Если же нужно, чтобы не выводилось и сама команда, то используйте собаку:

makefile @ Символ собаки (а коммерческое) -- что чего нужен

Служит прежде всего, чтобы makе не печатал саму выполняемую команду.

Примеры

Особенно это актуально для echo, чтобы было понятнее создадим мэйкфайл с таким содержимым

privet:
	@echo "Привет"
privet2:
	echo "Привет"

и выполним:

make privet

-- получим:

Привет

и для второй цели:

make privet2

получим:

echo "Привет"
Привет

make makefile y/n Команда с подтверждением да/нет yes/no

Работает следующий код:

test:
	@echo -n "Выполнить? [y/N] " && read ans && [ $${ans:-N} = y ]
	@echo -n "Starting.... \n"

-- вторая команда выполнится только если ввести y и нажать Энтер.

makefile echo -e Как выводить цветной текст

echo -e Не работает в ubuntu 16.04, поэтому для вывода цветного теста можно использовать экспорт заранее подготовленных команд на базе tput, например:

export red=`tput setaf 1`
export green=`tput setaf 2`
export yellow=`tput setaf 3`
export blue=`tput setaf 4`
export magenta=`tput setaf 5`
export cyan=`tput setaf 6`
export white=`tput setaf 7`
export reset=`tput sgr0`


start:
	@echo "${green}This's green color${reset} and normal ${cyan};)${reset}  "

[!] Makefile make по-русски - как использовать для удобных команд в терминале

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

make особенно полезна, когда вам нужно группировать команды (как вашего приложения, так и системные) и/или описывать зависимости между ними, например для задачи "обновить состояние бэкэнда_на_машине_разработчика" (такие задачи еще называют "целями"), можно указать, что она подразумевает консольные команды:

symfony Консольные команды (doctrine и не только)

(проверялось как минимум для Symfony 2.4)

Doctrine

  • Применение миграций (накат):
    php bin/console doctrine:migrations:migrate

    Или кратко:

    php bin/console migrate

    Полный откат:

    php bin/console doctrine:migrations:migrate first

    В командах migrate можно использовать псевдонимы: first, latest, prev, current and next

    Сведения о текущем статусе миграций:

Subscribe to RSS - make