Расширить переменные в Makefile

В GNU сделать присвоение переменной в двух направлениях: с переменной задержкой, немедленно переменных. Разница заключается в том, что они определяются и другой способ, когда расширение, бывший Разложить при использовании этой переменной, что означает, что значение этой переменной определяется только тогда, когда на самом деле используется, последний при определении его значение было определено. Используйте `=«?»=«Определить или определить переменную инструкции задержки определенных переменных; use`: =»переменные теперь определены переменные. Единственное, что следует отметить, что `? =«Только переменная не определена, но эффективный при обстоятельствах, то есть `? =» Переменная Delay используется для определения первого вхождения.

Для дополнительного оператора + = «», если они используются в правых передней части переменного (: =) определяются как переменное оно теперь непосредственно переменное, или как переменная задержка.

 

Пример 1.

// Makefile 
.PHONY: все 

Inst: = .. $ @ D 
Defer = .. $ @ D 

всего: 
        @echo " Inst составляет $ (Inst) " 
        @echo " Перенести составляет $ (Перенести) " 


// $ сделать 
Inst является ..d 
Defer является .all.d

 

Пример 2.

// Makefile 
.PHONY: весь 

х = Foo 
у = $ (х) б 
х = позже 

хй: = Foo 
уу: = $ (хй) б 
хх: = позже 
всего: 
        @echo " у есть $ (у) " 
        @echo « уу $ (уу) » 

// $ сделать 
у это позже б 
уу является Foo б

 Пример 3.

Задержка результатов присваивания переменных в ошибке.

// Makefile 
.PHONY: все 

CFLAGS = - д мм 
CFLAGS + = - t0x20000 
CFLAGS = $ (CFLAGS) - O 

всего: 
        @echo " CFLAGS составляет $ (CFLAGS) " 

// $ сделать 
Makefile: 5 : *** Рекурсивный переменная ' CFLAGS ' себя ( в конце концов) ссылки. Стоп.

 

Пример 4.

По той же самой переменной с использованием различных назначений в примере 3, чтобы устранить ошибку

// Makefile 
.PHONY: все 

CFLAGS = - д мм 
CFLAGS + = - t0x20000 
CFLAGS: = $ (CFLAGS) - O 

всего: 
        @echo " CFLAGS составляет $ (CFLAGS) " 

// $ сделать 
CFLAGS это -d мм -t0x20000 - О

 

рекомендация

отwww.cnblogs.com/yangjiguang/p/11627760.html