GNU make: переменная для аргументов командной строки

#makefile #gnu-make

#makefile #gnu-make

Вопрос:

Как передать всю командную строку (включая цели, строки ссылок, параметры make и т.д.) Из make верхнего уровня в рекурсивный make:

 targets : prerequisites
    $(MAKE) $(this should  expand to top level command line) additional_args
  

Спасибо.

Ответ №1:

Я думаю, что самое близкое, что вы можете получить, это использовать комбинацию из $(MAKE) , которая содержит точное имя файла, с которым был вызван make, $(MAKECMDGOALS) , которая содержит цели, указанные вами в командной строке, и $(MAKEFLAGS) , которая содержит определения любых переменных и (подмножество) переключателей, указанных в командной строке.

Ответ №2:

$(MAKE) Макрос является специальным и расширяется, чтобы включать некоторые соответствующие параметры. Смотрите раздел, как работает переменная MAKE в документации Make для получения более подробной информации. Однако это не включает полную строку, включая цели и т.д., И я не уверен, что это возможно.

Обычно я стараюсь избегать рекурсивного использования Make, здесь есть хорошая статья об этом: Рекурсивный Make считается вредным.