2015-03-13 2 views
2

Я знаю, что make clean.

Но что же делает make $* clean?

Я не могу найти четкое объяснение в любом месте.

+1

Это зависит от контекста. Где вы это видите? –

+0

К сожалению, я не мог раскрыть больше информации. Спасибо за ответ – padfoot

ответ

6

Как говорит Росс, мы не можем помочь, потому что вы не предоставили достаточного контекста. Вам необходимо предоставить хотя бы правило, в котором появляется 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.

+0

MadScientist. Ваш ответ помог! Большое спасибо! – padfoot

1

Если он вызывается из сценария оболочки, то $* раскрывается до аргументов, переданных сценарию оболочки.

#!/usr/bin/env bash 
# filename clean.sh 
make $* clean 

выше сценарий оболочки может быть вызван как,

#./clean.sh --silent 

который в конечном итоге передать --silent в make приложения и выполнить следующую команду.

#make --silent clean 

Наконец, $* в раковине-скриптом расширяется за счет оболочки, а не по make применения.

Смежные вопросы