1. 程式人生 > >Makefile中常用自動變數

Makefile中常用自動變數

自動變數含義
$*不包含副檔名的目標檔名稱
$+所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案
$<第一個依賴檔案的名稱
$?所有時間戳比目標檔案晚的依賴檔案,並以空格分開
[email protected]目標檔案的完整名稱
$^所有不重複的依賴檔案,以空格分開
$%如果目標是歸檔成員,則該變量表示目標的歸檔成員名稱


例項:
OBJS = kang.o yul.o
CC = gcc
CFLAGS =-Wall -O -g
david : $ (OBJS)
$(CC) $^ -o [email protected]
kang.o : kang.c kang.h
$(CC) $(CFLAGS) -c $< -o
[email protected]

yul.o : yul.c yul.h

$(CC) $(CFLAGS) -c $< -o [email protected]                    

 eg:
objects = foo.o bar.o
all: $(objects)
$(objects): %.o: %.c
$(CC) -c $(CFLAGS) $< -o [email protected]
“%.o”表明要所有以“.o”結尾的目標,也就是“foo.o bar.o”,“%.c”則取模式“%.o”的“%”,也就是“foo bar”,併為其加下“.c”的字尾,所以依賴目標就是“foo.c bar.c”。
命令中的“$<”和“

[email protected]”則是自動化變數,“$<”表示所有的
依賴目標集(也就是“foo.c bar.c”),“[email protected]”表示目標集(也就是“foo.o bar.o”)。
等價於下面的規則:
foo.o : foo.c
$(CC) -c $(CFLAGS) foo.c -o foo.o
bar.o : bar.c
@$(CC) -c $(CFLAGS) bar.c -o bar.o
前面加上@,表示取消回顯,就是說不顯示編譯過程。
試想,如果我們的“%.o”有幾百個,那種我們只要用這種很簡單的“靜態模式規則”                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

相關推薦

Makefile常用自動變數

自動變數含義 $*不包含副檔名的目標檔名稱 $+所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案 $<第一個依賴檔案的名稱 $?所有時間戳比目標檔案晚的依賴檔案,並以空格分開 [email protected]目標檔案的完整名稱 $^所

make的引數以及Makefile自動變數

最近把Makefile相關的內容稍微梳理了一遍,記錄下一些常用的內容,這篇寫下引數和自動變數吧,首先make的引數: make的引數 常用: “-q” “--question” 這個引數的行為是找目標的意思,也就是說,如果目標存在,那麼其什麼也不會輸出, 當然也不會執行編

Makefile常用函式

Makefile常用函式總結 1、realpath  返回一個絕對路徑 例:ROOT  = $(realpath ./)  返回當前路徑的絕對地址,賦值給ROOT 2、wildcard 萬用字元函式,類似於linux中的 “*” 命令格式: $(

工程Makefile常用符號

Makefile中常見內容 TOPDIR := $(shell /bin/pwd) CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ else if [ -x /bin/bash ]; the

那些程式常用變數

字串位置: leading前面,trailing 後面, 符號: specifier 區分符,sign 符號,簽名,white 空白格 數字: parenthesis (parentheses)圓括號,decimal point 小數點,exponent 指數,curr

shell指令碼及makefile的特殊變數

shell指令碼中的特殊變數 1. $# 傳遞到指令碼的引數個數 2. $* 以一個單字串顯示所有向指令碼傳遞的引數。與位置變數不同,此選項引數可超過9個3. $$ 指令碼執行的當前程序ID號4. $! 後臺執行的最後一個程序的程序ID號5. [email p

makefile使用環境變數的例子

上例子 首先,在linux 環境中,如此設定: #test=1234567 #export test #echo $test 1234567 # 然後編輯 Makefile all: @echo $(test) 執行結果:  #make  

Makefile常用的一些符號

1 環境變數 1.1 編譯器 CC // C語言編譯器,預設值為gcc CXX // C++語言編譯器,預設值為g++ 說明:這是預設的變數,無需使用者自定義(但是使用者可以修改其值,例如CC=arm-linux-gcc,用於交叉編譯)。 1.2 編譯器引數 C

Android build系統常用LOCAL_變數

 以下內容節選自本書 編寫模組的編譯檔案,實際就是定義一系列以“LOCAL_”開頭的編譯變數,因此我們有必要弄明白這些變數的具體含義。下面是一些經常使用的LOCAL_編譯變數的說明: 變數名 說明 LOCAL_ASSET_FILES 編譯APK檔案時用於指定資源列表,通常寫成 LOCAL_

Makefile常見的自動變量和含義

makefile info 自動 vmm var p s xms userinfo href 劫V3W71v9QGW貝膳http://jz.docin.com/cjwjy04096 1姥樸5KAQ訪顯39http://shufang.docin.com/fjqbs11

在linux常用到的profile的環境變數

關於yum使用的blog:https://blog.csdn.net/zengmingen/article/details/78225612 yum的安裝與解除安裝:https://blog.csdn.net/james_jr10/article/details/78357600 更

【三】makefile變數

一、變數賦值 直接展開式 := 特點:在定義時立即展開應用的變數 示例: value1 := 5 value2 := $(value1) #value2會立即被賦值成5 value1 :=6 var-test: @echo "value2", $(value2)

uboot的主Makefile變數MKCONFIG建立符號連結相關問題

在uboot的主Makefile中,定義了一個變數:MKCONFIG    := $(SRCTREE)/mkconfig。 該MKCONFIG 變數即為源程式目錄下的mkconfig指令碼檔案,該檔案在uboot的前期配置操作時會用到。 x210_sd_conf

Makefile檔案的MAKEFILE_LIST變數

                                          &

Makefile.am 常用變數說明

本文用於說明編寫AutoTool工具中Makefile.am相關變數的用法 一、概述 Makefile.am是AutoTool編譯時讀取相關編譯引數的配置檔案,檔案區分大小寫,從頂層目錄到子工程生成二進位制檔案的路徑上的目錄都要存在,如果中間目錄不存在該檔案,其下的子

uboot的主Makefile變數MKCONFIG功能介紹

在uboot的主Makefile中,定義了一個變數:MKCONFIG    := $(SRCTREE)/mkconfig。 該MKCONFIG 變數即為源程式目錄下的mkconfig指令碼檔案,該檔案在uboot的前期配置操作時會用到。 x210_sd_config : 

matlab如何自動變數命名?

在大量資料處理中,如果單獨給變數命名,無疑是一項簡單、費時、重複性工作。matlab通過eval函式提供了自動命名變數的功能,見下面的例子: %%%%%%%%%%%%%%%%%%%%%%%%%%%%% R=[1 2 3;     4 5 6;     7 8 9]; for

makefile變數定義的空格

comma:= , empty:= # space變數用兩個空變數作為識別符號,當中是一個空格 space:= $(empty) $(empty) foo:= a b c bar:= $(subst $(space),$(comma),$(foo)) haha :@echo

Makefile變數讀取與生效時間

現在我在A Makefile中include B Makefile,在B Makefile中有變數OBJS和VPATH的賦值 來看看B Makefile (libmad/Makefile) VPATH += $(ROOT_DIR)/libmad OBJS +

Makefile如何根據原始檔自動生成其所需要的標頭檔案

前言 Makefile自動生成標頭檔案依賴是很常用的功能,本文的目的是想盡量詳細說明其中的原理和過程。 Makefile模板 首先給出一個本人在小專案中常用的Makefile模板,支援自動生成標頭檔案依賴。 CC = gcc CFLAGS = -Wa