Передающие аргументы для “создания выполненным”

Я использую Make-файлы.

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

prog: ....
  ...

run: prog
  ./prog

Расслабьтесь вниз. Я знаю, что это оригинально, но никакая потребность в овации стоя.

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

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

Спасибо!

328
задан lesmana 9 July 2017 в 11:47
поделиться

4 ответа

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

run: ./prog
    ./prog ${ARGS}

Тогда:

make ARGS="asdf" run
234
ответ дан 23 November 2019 в 00:48
поделиться

для стандартного make можно передавать аргументы, определяя макросы как этот

make run arg1=asdf

, а затем использовать их как этот

run: ./prog $(arg1)
   etc

Ссылки для make . NMake NMake

45
ответ дан 23 November 2019 в 00:48
поделиться

Нет. Взглянув на синтаксис на странице руководства для GNU make

make [-f makefile] [options] ... [target] ...

, вы можете указать несколько целей, следовательно, «нет» (по крайней мере, в именно так, как вы указали).

9
ответ дан 23 November 2019 в 00:48
поделиться

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

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

.PHONY: run

run:
        prog $(arg1)

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

  1. в качестве аргумента: сделать arg1 = "asdf" run
  2. или определить как среду: arg1 = "asdf" make run
2
ответ дан 23 November 2019 в 00:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: