Предполагая, что нет по умолчанию Makefile в текущем каталоге (предположительно причина вы передаете -f ../makefile
), то ваш пример ../makefile
будет работать, как это, если вы вызываете make
как:
$ make MAKEFILES=../makefile hi
make bye
make[1]: Entering directory '/home/imk/develop/scrap'
echo 'whatever'
whatever
make[1]: Leaving directory '/home/imk/develop/scrap'
См 3.4 The Variable MAKEFILES
Если является файл по умолчанию в текущем каталоге, то этот подход будет причиной e make
, чтобы прочитать файл по умолчанию после того, как он , прочитал ../makefile
, с неблагоприятными результатами. В этом случае предпочитайте @ Dummy00001 ответ.
Итак, вместо жесткого кодирования «привет» вы хотели бы передать все, что было передано из командной строки? Но если «Make target» говорит, что выполнить, «привет» уже знает, что он выполняет «привет»; как это могло быть не так? Возможно, вы могли бы уточнить, что вы сейчас получаете, и то, что вы хотели бы получить вместо этого. – tripleee