2016-08-12 2 views
4

Когда я определить пользовательскую функцию в Makefile, как этотФункция вызова Makefile. Как получить все аргументы

define add_target 
${1}: ${2} ${3} 
endef 

Как я могу получить список всех аргументов, которые были предоставлены $(call add_target, ...)?

Так что $(call add_target, A, B) будет расширена до A: B и это $(call add_target, A, B, C, D) будет расширена до A: B C D

GNU manual только говорит, что

Когда сделайте расширяет эту функцию, она присваивает каждому из параметров для временных переменных $ (1), $ (2) и т. Д. Переменная $ (0) будет содержать переменную. Максимальное количество аргументов параметров отсутствует.

, но ничего о том, как получить все параметры.

ответ

4

Невозможно, за исключением выписывания $1 $2 $3 $4 $5 $6 ... Конечно, независимо от того, сколько переменных вы перечисляете, вызывающий мог использовать больше.

Однако в вашем примере простейшая вещь - просто передать два аргумента: имя цели и список предварительных условий (как один аргумент). Так что не было бы:

define add_target 
${1}: ${2} 
endef 

... $(call add_target, A, B) 
... $(call add_target, A, B C D) 

(без запятых, отделяющих предпосылки в списке)

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