Может ли «цель» принять аргумент? - PullRequest
1 голос
/ 05 апреля 2011

Допустим, я делаю mk "target", чтобы что-то построить.Можно ли передать аргумент этому?т.е. mk "target" "x" и это будет делать соответственно?Я знаю, что я буду предоставлять mk "target" аргумент, и я знаю его семантику, просто не знаю имя заранее.

Возможно?

Ответы [ 3 ]

5 голосов
/ 05 апреля 2011

Возможно, вы захотите использовать GNU Make "Переменные" :

$ cat Makefile

ifndef LOLCAKES
   LOLCAKES=1
endif

all:
   @echo $(LOLCAKES)

$ make all LOLCAKES=42

Вы не объяснили, чего пытаетесь достичь, поэтому трудно понять, какого рода «аргумент» вам нужен.

2 голосов
/ 05 апреля 2011

make target x заставит make попытаться построить target и x.Там нет никакого способа получить модификатор, как вы, кажется, ожидаете.Хорошее решение может состоять в том, чтобы иметь правила с составными именами:

target: target.debug target.release

target.release:
    # recipe for release build

target.debug:
    # recipe for debug build

Тогда вы можете использовать target.debug, target.release или просто target, и получить некоторое вменяемое поведение.

0 голосов
/ 05 апреля 2011

Вы можете использовать переменные окружения:

$ cat Makefile 
all:
    @echo $(FOO)
$ FOO=bar make
bar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...