Makefile

makefile Испрользование переменных

Например так:

PROJECT_NAME = myproj
APP_CONTANER_COMMAND_PREF = @docker exec -it $(PROJECT_NAME)_web_1

migrate:
	@echo  "Выполняем миграции..."
	$(APP_CONTANER_COMMAND_PREF) php bin/console doctrine:migrations:migrate -n

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

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

show_vasya:
	@echo  "Вася"

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

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

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

make command2

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

makefile Вызов одной make команды ПОСЛЕ другой

Ранее мы уже говорили о том, как вызывать другие цели перед данной.

Чтобы вызывать другую цель после команд данной цели, просто явно указывайте команду make, например:

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 "Привет"
Привет

Makefile:...: *** target pattern contains no '%'. Stop.

Makefile:18: *** target pattern contains no '%'. Stop.

Возможные причины:

  • Пробелы вместо таба:
    Пишут что в команде может встречаться знак для регулярки и из-за этого идет ошибка, но в моем случае причина опять оказалась в пробелах вместо таба.
  • Неверный формат команды:

    Или та же самая ошибка вызывается при неверном формате команды (пример с зависимостями):

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}  "

netbeans Замена табов на пробелы и Makefile - как решить проблему

Автозамена табов на проблемы приводит к ошибке вроде "Makefile:2: *** missing separator. Stop."

Из главного меню нетбинса переходим:

Tools
->Options
->Editor

Далее:

  • Снимете галочку с "Extend Tabs to Spaces"
  • и нажмите "Apply"

После чего можно попробовать снова выполнить make.

Makefile:2: *** missing separator. Stop. - Ошибка, решение

Общий формат ошибки:

Makefile:номерстроки: *** missing separator. Stop.

например:

Makefile:2: *** missing separator. Stop.

В моём случае бросается для файл, где во второй строке в начале используется 1 таб:

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

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

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

Subscribe to RSS - Makefile