makefile專題:預定義變數的使用
關鍵詞: makefile中預定義的變數、自動變數的含義、特殊變數的含義
1. makefile中預定義的變數
- 自動變數:
[email protected]
,$^
,$<
…… - 特殊變數:
$(MAKE)
,$(MAKECMDGOALS)
,$(MAKEFILE_LIST)
……
2. 自動變數的含義
[email protected]
: 當前規則中觸發命令被執行的目標$^
:當潛規則中的所有依賴$<
:當前規則中的第一個依賴
3. 自動變數的使用示例
注意:
1)$
對於makefile由特殊的含義,輸出時需要加上一個$
進行轉義
2)
對Bash Shell有特殊含義,輸出時需要加上\
進行轉義
程式設計說明5_1:自動變數的使用示例
.PHONY : all first second third
all :cd first second third
@echo "\[email protected] => [email protected]"
@echo "$$^ => $^"
@echo "$$< => $<"
first:
second:
third:
輸出結果:
delphi@delphi-vm: ~/code/ch1_make/5/5_1$ make all
[email protected] => all
$^ => first second third
$< => first
程式設計說明5_2:自動變數在工程中的應用
TARGET := hello.out
CC := gcc
## 將目標名和依賴用自動變數替換
$(TARGET) : func.o main.o
$(CC) -o [email protected] $^
func.o : func.c
$(CC) -o [email protected] -c $^
main.o : main.c
$(CC) -o [email protected] -c $^
.PHONY : clean rebuild all
rebuild : clean all
all : $(TARGET)
clean :
rm *.o $(TARGET)
4. 特殊變數的含義
$(MAKE)
:當前make直譯器的檔名$(MAKECMDGOALS)
:命令列中指定的目標名(make的命令列引數)$(MAKEFILE_LIST)
:make所需要處理的makefile檔案列表,當前makefile的檔名總是位於列表的最後,檔名之間以空格進行分隔$(MAKE_VERSION)
:當前make直譯器的版本$(CURDIR)
:當前make直譯器的工作目錄$(.VARIABLES)
:所有已經定義的變數名列表(預定義變數和自定義變數)
程式設計說明5_3:特殊變數的使用示例1
.PHONY : all out first second third
all out :
@echo "\$$(MAKE) = > $(MAKE)"
@echo "\$$(MAKECMDGOALS) => $(MAKECMDGOALS)"
@echo "\$$(MAKEFILE_LIST) => $(MAKEFILE_LIST)"
輸出結果:
delphi@delphi-vm:~/code/ch1_make/5/5_3$ make
$(MAKE) = > make
$(MAKECMDGOALS) =>
$(MAKEFILE_LIST) => makefile
delphi@delphi-vm:~/code/ch1_make/5/5_3$ make all
$(MAKE) = > make
$(MAKECMDGOALS) => all
$(MAKEFILE_LIST) => makefile
delphi@delphi-vm:~/code/ch1_make/5/5_3$ make all out
$(MAKE) = > make
$(MAKECMDGOALS) => all out
$(MAKEFILE_LIST) => makefile
$(MAKE) = > make
$(MAKECMDGOALS) => all out
$(MAKEFILE_LIST) => makefile
程式設計說明5_3:特殊變數的使用示例2
.PHONY : test first second third
first :
@echo "first"
second :
@echo "second"
third :
@echo "third"
test :
$(MAKE) first
$(MAKE) second
$(MAKE) third
輸出結果:
[email protected]:~/code/ch1_make/5/5_3$ make test
make first
make[1]: 正在進入目錄 `/home/delphi/code/ch1_make/5/5_3'
first
make[1]:正在離開目錄 `/home/delphi/code/ch1_make/5/5_3'
make second
make[1]: 正在進入目錄 `/home/delphi/code/ch1_make/5/5_3'
second
make[1]:正在離開目錄 `/home/delphi/code/ch1_make/5/5_3'
make third
make[1]: 正在進入目錄 `/home/delphi/code/ch1_make/5/5_3'
third
make[1]:正在離開目錄 `/home/delphi/code/ch1_make/5/5_3'
5. 小結
- makefile提供了預定義變數供開發者使用
- 預定義變數的使用能夠使得makefile的開發更高效
- 自動變數是makefile中最常見的元素
- 使用
$(.VARIABLES)
能夠獲取所有的特殊變數
宣告:此文章為本人在學習狄泰軟體學院《十二月提升計劃》所做的筆記,參考書籍《專業嵌入式軟體開發》——李雲,文章中包含狄泰軟體資料內容和《專業嵌入式軟體開發》資料內容,一切版權歸狄泰軟體和《專業嵌入式軟體開發》所有!
相關推薦
makefile專題:預定義變數的使用
關鍵詞: makefile中預定義的變數、自動變數的含義、特殊變數的含義 1. makefile中預定義的變數 自動變數: [email protected], $^, $<
makefile 的主要預定義變數及常用命令列選項
預定義變數 含義$* 不包含副檔名的目標檔名稱。$+ 所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。$< 第一個依
makefile專題:變數和不同的賦值方法
關鍵詞:makefile的變數、makefile中四種變數的賦值方式:簡單賦值:=、遞迴賦值=、條件賦值?=、追加賦值+= 1. makefile的變數 makefile中支援程式設計語言中變
【php手冊:變數】預定義變數
'argc'包含命令列模式下傳遞給該指令碼的引數的數目(如果執行在命令列模式下)。' GATEWAY_INTERFACE '伺服器使用的 CGI 規範的版本。'SERVER_ADDR'當前執行指令碼所在的伺服器的 IP 地址。例:::1'SERVER_NAME'當前執行指令碼所在的伺服器的主機名。例:loca
Linux Shell基礎 環境變數、位置引數變數、預定義變數
環境變數 環境變數和使用者自定義變數最主要的區別在於,環境變數是全域性變數,而使用者自定義變數是區域性變數。使用者自定義變數只在當前的 Shell 中生效,而環境變數會在當前 Shell 和這個 Shell 的所有子 Shell 中生效。如果把環境變數寫入相應的配
Shell中的預定義變數
Shell中的預定義變數 就是 shell 設計者事先已經定義好的變數,可以直接在 shell 指令碼中使用 基本語法 $$ (功能描述:當前程序的程序號(PID)) $! (功能描述:後臺執行的最後一個程序的程序號(PID)) $? (功能描述:最後一次執行的命令的返回狀態。如果這
nginx自定義變數與內建預定義變數
總覽 nginx可以使用變數簡化配置與提高配置的靈活性,所有的變數值都可以通過這種方式引用: $變數名 而nginx中的變數分為兩種,自定義變數與內建預定義變數 內建變數 宣告 可以在sever,http,location等標籤中使用set命令(非唯一)宣告變數,語
PHP_Day03_預定義變數
<?php /* 介紹:預定義變數 作者:趙某~ 時間:2018/11/5 */ // 預定義的儲存全域性變數的陣列 $GLOBALS $var = 'Xust'; echo $var.'<br>'; # 訪問某個全域性變數方
php幾個預定義變數 SERVER 'DOCUMENT ROOT'
<?phpecho 'documentroot:'.$_SERVER['DOCUMENT_ROOT'].'<br>'; //根目錄,在apache的配置檔案裡定義:httpd.conf 比如:DocumentRoot "D:/work/php_root"ech
Linux基礎學習之Shell基礎——Bash變數——預定義變數
1、預定義變數 預定義變數 作用 $? 最後一次執行的命令的返回狀態。如果這個變數的值為,證明上一個命令正確執行;如果這個變數的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了。
MATLAB的使用(四)運算子、關係與邏輯函式說明以及預定義變數名說明
四則表示式關係操作符和邏輯操作符及其功能: 關係操作符: < 表示小於; = 表示大於等於; 表示大於 ; == 表示等於; ~= 表示約等於; 邏輯操作符: &am
Linux Shell中的變數-預定義變數
參考:《Linux命令 / 編輯器與Shell程式設計》 ################################################ note that :與其他程式語言不同,Bash中的變數沒有資料型別的區別,變數中的值都是以字串的形式儲存的,如果
CMake 預定義變數
本帖子適用於初學者,StepByStep的入門CMake,CMake也是一門程式語言,只不過是針對編譯和連結這種程式構建的過程的語言,學習基本語法就可以初步入門,後面需要什麼複雜的功能,進階掌握需要自己去查詢官方文件,後續會給出查閱的一些方式
PHP中的預定義變數$_SERVER引數詳解
在PHP編碼中,經常遇到需要使用位址列的資訊,比如域名、訪問的URL、URL帶的引數等,這些資訊PHP伺服器都存在了預定義變數$_SERVER中。文件解釋:$_SERVER 是一個包含了諸如
STL學習之十三:預定義函式和函式介面卡
本文主要介紹預定義函式和函式介面卡。預定義好的函式物件,能實現不同型別的資料的運算, 實現了資料型別 和演算法的分離===》通過函式物件技術實現。下面是示例程式碼: #include "iostream" using namespace std; #include "ve
C++中幾個預定義變數的介紹
在C++程式設計中,有幾個預定義變數,這幾個預定義變數在使用的時候很方便。比如,在C++中中為了獲取時間,常常需要借用C語言的藉口time或者CTime類,然後如果是簡單的獲取時間,通過
makefile專題:函式定義及呼叫
關鍵詞:makefile中的函式、自定義函式、預定義函式 1. makefile中的函式 make直譯器提供了一系列的函式供 makefile呼叫(即預定義函式,相當於庫函式) 在makefi
makefile專題:自動生成依賴關係(續)
.PHONY : all clean rebuild MKDIR := mkdir RM := rm -rf CC := gcc DIR_DEPS := deps DIR_EXES := exes
Shell入門知識5——預定義變數
基本介紹 shell已經定義好的變數,可以在shell指令碼直接使用。 基本語法 $$ 當前程序的程序號 $! 後臺執行的最後一個程序的程序號 $? 最後一次執行的命令的
shell的預定義變數
1. 預定義變數 預定義變數和環境變數相類似,也是在Shell一開始時就定義了的變數。所不同的是,使用者只能根據Shell的定義來使用這些變數,而不能重定義它。所有預定義變數都是由$符和另一個符號組成的,常用的Shell預定義變數如下表所示 變數名 含義