Передача аргументов в «make run» - PullRequest
308 голосов
/ 06 февраля 2010

Я использую Makefiles.

У меня есть цель с именем run, которая выполняет цель сборки. Упрощенно это выглядит следующим образом:

prog: ....
  ...

run: prog
  ./prog

Сядь обратно. Я знаю, что это гениально, но не нужно оваций.

Теперь мой вопрос - есть ли способ передать аргументы? Так что

make run asdf --> ./prog asdf
make run the dog kicked the cat --> ./prog the dog kicked the cat

Спасибо!

Ответы [ 12 ]

2 голосов
/ 07 февраля 2010

anon , run: ./prog выглядит немного странно, так как правая часть должна быть целью, поэтому run: prog выглядит лучше.

Я бы предложил просто:

.PHONY: run

run:
        prog $(arg1)

и я хотел бы добавить, что аргументы могут быть переданы:

  1. в качестве аргумента: make arg1="asdf" run
  2. или определиться как среда: arg1="asdf" make run
0 голосов
/ 28 февраля 2019

Другой трюк, который я использую, это флаг -n, который говорит make выполнить пробный прогон. Например,

$ make install -n 
# Outputs the string: helm install stable/airflow --name airflow -f values.yaml
$ eval $(make install -n) --dry-run --debug
# Runs: helm install stable/airflow --name airflow -f values.yaml --dry-run --debug
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...