Как передать аргументы в виде списка значений, разделенных пробелом в командной строке для цели make? - PullRequest
0 голосов
/ 27 июня 2019

Мой Makefile выглядит следующим образом:

#====================================================
PREFIX_LIST ?= 

append_prefix = $(foreach prefix, $(PREFIX_LIST), myText_$(prefix))

mytarget: 
     echo $(append_prefix)

#====================================================

Я хочу, чтобы PREFIX_LIST имел список значений, разделенных пробелом, и передавал его как переменную, когда я строю эту цель из командной строки.

Что-то вроде (это не совсем правильно):

$ make PREFIX_LIST= [list of values] mytarget

Я уже пытался передать значения внутри Makefile как:

#====================================================
PREFIX_LIST ?= foo bar baz xyz

append_prefix = $(foreach prefix, $(PREFIX_LIST), myText_$(prefix))

mytarget: 
     echo $(append_prefix)

#====================================================

, и он дал ожидаемый результат (см. Ввнизу)

В командной строке:

$ make mytarget

Вывод:

myText_foo myText_bar myText_baz myText_xyz

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

1 Ответ

0 голосов
/ 27 июня 2019

Просто заключите список в кавычки (простые или двойные):

$ make PREFIX_LIST="foo bar baz xyz" mytarget
myText_foo myText_bar myText_baz myText_xyz

Примечание: вместо функции foreach вы также можете использовать addprefix:

PREFIX_LIST ?= 

append_prefix = $(addprefix myText_,$(PREFIX_LIST))

mytarget: 
    @echo $(append_prefix)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...