Я знаю, что make clean
.
Но что же делает make $* clean
?
Я не могу найти четкое объяснение в любом месте.
Я знаю, что make clean
.
Но что же делает make $* clean
?
Я не могу найти четкое объяснение в любом месте.
Как говорит Росс, мы не можем помочь, потому что вы не предоставили достаточного контекста. Вам необходимо предоставить хотя бы правило, в котором появляется make $* clean
.
Однако, я думаю, это выглядит примерно так:
%.xyz:
make $* clean
Здесь $*
является automatic variable, которая будет расширяться на стебле мишени (текст, соответствующий %
в шаблоне). Таким образом, если вы вызываете make foobar.xyz
, это правило будет вызывать make foobar clean
: он будет запускать суб-make, построить цель foobar
, а затем построить цель clean
.
Я не видел ничего подобного, хотя я могу придумать причины для этого. Гораздо более распространенным будет, если вы ошиблись при вводе команды, и он действительно сказал make -C $* clean
, давая правило так:
%.xyz:
make -C $* clean
(заметим, вы должны никогда использовать статическую строку make
при вызове суб-мейкера, вы должны всегда использование $(MAKE)
или ${MAKE}
). В этом примере запуск make foobar.xyz
будет выполняться make -C foobar clean
, что означает изменение в каталоге foobar
и запуск цели clean
.
MadScientist. Ваш ответ помог! Большое спасибо! – padfoot
Если он вызывается из сценария оболочки, то $*
раскрывается до аргументов, переданных сценарию оболочки.
#!/usr/bin/env bash
# filename clean.sh
make $* clean
выше сценарий оболочки может быть вызван как,
#./clean.sh --silent
который в конечном итоге передать --silent
в make
приложения и выполнить следующую команду.
#make --silent clean
Наконец, $*
в раковине-скриптом расширяется за счет оболочки, а не по make
применения.
Это зависит от контекста. Где вы это видите? –
К сожалению, я не мог раскрыть больше информации. Спасибо за ответ – padfoot