Как я могу вставить специальные аргументы в середине переменной? - PullRequest
0 голосов
/ 03 июня 2018

У меня есть следующий Makefile:

PROG := "prog -o1 one -o2 two --"

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

thing:
    $(PROG) some files here

, но есть особая цель, которую я хочу назвать как prog -o1 one -o2 two -o3 three -- some other file, поэтому вот что я попытался сделать (предполагая :=установите переменную для отложенной оценки, хотя кажется, что я неправильно понял контекст там:

PROG := "prog -o1 one -o2 two $(OTHER_PROG_ARGS) --"

thing:
    $(PROG) some files here

other : OTHER_PROG_ARGS="-o3 three"
other:
    $(PROG) some other file

Кажется, что PROG расширяется при назначении с :=;Есть ли способ сделать, я хочу, я хочу (например, с помощью какого-то ленивого расширения)?

1 Ответ

0 голосов
/ 03 июня 2018

После более внимательного прочтения руководства , в частности, разницы между := и =, , я узнал, что := назначения расширяются сразу, а = расширяется рекурсивно (для моегоцелях, 'лениво').

Назначение PROG с = и предоставление переменных, специфичных для цели, как и прежде, следующие действия:

PROG = prog -o1 one -o2 two $(OTHER_PROG_ARGS) --

thing:
    $(PROG) some files here

other: OTHER_PROG_ARGS = -o3 three
other:
    $(PROG) some other file
...