Відповіді:
Це означає "не повторюйте цю команду на виході". Отже, це правило говорить "виконайте команду оболонки :
і не повторюйте результат.
Звичайно, команда оболонки :
- неоперативна, тому це говорить "нічого не робіть і не кажіть".
Чому?
Хитрість тут полягає в тому, що у вас є незрозуміле поєднання двох різних синтаксисів. Макіяж (1) синтаксис є використання дії , починаючи з @, який просто не повторити команду. Так правило, як
always:
@echo this always happens
не випромінює
echo this always happens
this always happens
Тепер дією частини правила може бути будь-яка команда оболонки, в тому числі :
. Довідка Bash пояснює це так само, як і будь-де:
$ help :
:: :
Null command.
No effect; the command does nothing.
Exit Status:
Always succeeds.
@:
(не тільки @
), то, крім відповіді @ guestolio, це також може бути залишком для розвитку. Це як написати функцію в Python, яка лише містить pass
. Це може бути корисно для блокування коду для копіювання / вставки, але вони, як правило, не повинні існувати довго. Під час стирчування цього файлу все-таки
Для тих, хто цікавиться, чому ви можете це зробити, корисно, якщо ви хочете зробити вигляд, що щось було зроблено, щоб Make не виводив вашу мету "нічого не робиться".
Один із прикладів - якщо у вас є хибна ціль, яку ви завжди виконуєте, і в ній у вас є купа умовних умов у команді. Ви хочете мати хоч щось у випадку, якщо ці умови виявляться помилковими, і нічого не буде зроблено.
Наприклад (зі скриптів Linux / Makefile.clean):
__clean: $(subdir-ymn)
ifneq ($(strip $(__clean-files)),)
+$(call cmd,clean)
endif
ifneq ($(strip $(__clean-dirs)),)
+$(call cmd,cleandir)
endif
ifneq ($(strip $(clean-rule)),)
+$(clean-rule)
endif
@: