在make中有四種方式對變數賦值

2021-06-21 15:57:06 字數 723 閱讀 1223

在make中有四種方式對變數賦值:

這種方式叫做「簡單展開」,因為在讀到makefile中的這一行時

等號右邊就立即被展開了,等號右邊引用的所有變數(如例子中的cc)也會被立即展開。其行為與一般程式設計和指令碼語言相同。

當等號右邊引用的變數(如例子中的cc)還沒有被定義時,它被展開成空(nothing)而不是空格之類。

這種方式叫做「遞迴展開」,直到該變數被使用時等號右邊的內容才會被展開,其實叫做「遲滯展開」更合適。神奇的是,這種展開方式可以不按順序定義變數。比如:

make_depend = $(cc) -m

...# some time later

cc = gcc

只要在此之前沒有引用過

make_depend就沒問題。

另外,不止是

「遲滯展開」,事實上每次使用該變數,等號右邊的內容都會被重新展開。

這種方式叫「條件展開」,只有當output_dir 還沒有被定義過時才進行賦值,否則什麼都不做。這種方式在處理環境變數是特別有用。

「追加」方式。 其主要目的是給「遞迴展開」的變數追加內容。因為簡單變數可以用****** := $(******) new stuff的方式來追加內容;而對於遞迴展開的變數,recursive = $(recursive) new stuff會導致迴圈引用。這種情況只能用+=運算子。 

PHP 中有四種不同的變數作用域

php 變數作用域 變數的作用域是指令碼中變數可被引用和使用的部分,php 中有四種不同的變數作用域 序號 作用域 描述 1 local 區域性作用域 2 global 全域性作用域 3 static 靜態作用域 4 parameter 函式引數作用域 1 local 本地的 區域性變數的作用域 在...

spring 對屬性的四種注入方式

spring 對屬性的四種注入方式 1.set方式注入 注意 這種方式是我比較熟悉的方式,也是我經常用到的方式,直接使用name和value進行注入操作。如果是引用物件型別,使用ref將配置好的bean物件注入。2.構造方法注入 注意 我一般使用的是構造方法引數的名字進行注入,但是有時候出現,沒有指...

linux修改PATH環境變數四種方式

linux修改path環境變數的四種方式,每種方式有不同的許可權。以新增mongodb server變數為列 檢視path echo path 修改方法一 export path usr local mongodb bin path 配置完後可以通過echo path檢視配置結果。生效方法 立即生效...