1. 程式人生 > >Makefile中變數讀取與生效時間

Makefile中變數讀取與生效時間

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

VPATH += $(ROOT_DIR)/libmad
OBJS += version.o fixed.o bit.o timer.o stream.o frame.o synth.o decoder.o \
        layer12.o layer3.o huffman.o minimad.o

然後在看看A Makefile

all: $(OBJS)
        $(CPLUS) $(CPLUS_CFLAGS) $(
OBJS) -o hifi4_framework -lloader %.o: %.c $(CC) $(CFLAGS) -c -o [email protected] $< ifeq ($(CONFIG_MP3_DECODER_LIBMAD), y) include libmad/Makefile endif

當在A Makefile中編譯all這個目標的時候,他會讀取OBJS這個變數,這時候OBJS變數會有B Makefile中的賦值,如version.o fixed.o這些。
但是當A Makefile中編譯%.o這個目標的時候,卻不會編譯VPATH中指定的目錄下的程式碼,因為Makefile有個讀取變數的順序,編譯%.o這個目標的時候Makefile還沒有讀取到include B Makefile中的VPATH這個變數,而不像編譯all這個目標的時候用到了OBJS這個變數,所以會去全域性的搜尋OBJS這個變數。

所以為了讓VPATH這個變數儘早被Makefile讀取到,最好將include B Makefile放在比較開頭的位置,將A Makefile改成下面這種形式。

ifeq ($(CONFIG_MP3_DECODER_LIBMAD), y)
include libmad/Makefile
endif

all: $(OBJS)
        $(CPLUS) $(CPLUS_CFLAGS) $(OBJS)  -o hifi4_framework -lloader

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

相關推薦

Makefile變數讀取生效時間

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

Makefile變數$var$$var的區別詳談

很多人對$var與$$var東西不理解,總是區分不開Makefile中的變數與shell中的變數,我來解釋一下吧。希望對你有用。 首先make精神就是實現自動化編譯,是按照Makefile的規則來進行的,啥子規則呢,目標與依賴檔案的規則。 凡是目標後面有依賴,並根據依賴產生

Jmeter性能測試Tps圖響應時間

ado jmeter 圖片 times col image per 技術分享 com jp@gc - Response Times Over Time顯示圖: jp@gc - Transactions per Second Jmeter性能測試中Tps圖與響應時間圖

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

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

js變數宣告變數提前

js中變數宣告與變數提前 變數宣告:通過var表明變數的型別與名字,但並未賦值,如 var a; 變數初始化:即為a賦值,如 a=1; 使用變數步驟:a.宣告–>b.賦值–>3.呼叫 使用方法 // 方式一:宣告和賦值不分離 var str = "宣告和賦

uboot的主Makefile變數MKCONFIG功能介紹

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

oracle日期型別unix 時間戳的轉換

Unix時間戳記是從'1970-01-01 00:00:00'GMT開始的秒數,表現為整數型。 Oracle中的時間是Date型,以下函式提供了兩種時間轉換的Oracle函式 (1)從Unix時間戳記轉換為Oracle時間 create or replace function

Oracle日期型別 Unix 時間戳的…

Unix時間戳記是從'1970-01-01 00:00:00'GMT開始的秒數,表現為整數型。 Oracle中的時間是Date型,以下函式提供了兩種時間轉換的Oracle函式 (1)從Unix時間戳記轉換為Oracle時間 create or replace function unix_to_oracle(

js變數函式名重名的問題

網上有很多的部落格有談到這個重名的問題,但是我覺得將不算是很全面,至少我看了還是不懂下面這道題到底是怎麼回事。那在講解這個問題的時候,我們先來看看下面這道題,一道面試題(南山西麗xx研究院): var a = 1; function b(){ a = 10;

makefile變數定義的空格

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

軟體專案開發需求分析設計時間和開發時間的比例分配的問題

          從畢業到現在做開發已經有近7年了,大大小小的專案也經歷了幾十個了。在專案開發的過程中很少有專案在設計階段投入很多時間的, 有很多情況下,甚至都沒有怎麼做設計就直接開始編碼了,處於一種邊開發邊設計到狀態,還有些時候,設計就是完成一些文件來應付下,很 少有認

JavaXML文件的讀取寫入

讀取 聯系 過程 樹形 樹形結構 java 以及 ade 文件的 表現:以 “.xml”為文件擴展名的文件; 存儲:樹形結構; 用途:存儲以及傳遞信息;利用相同的XML文件將不同的系統聯系起來; 在Java程序中如何獲取XML文件的內容? 在Java程序中讀取XML文

Matlab處理日期時間的函數

html num 查看 格式 del 需要 log 但是 獲取 Matlab用三種格式來表示日期與時間(1)雙精度型日期數字:一個日期型數字代表從公元0年到某一日期的的天數,例如,2008年8月26日夜時0點鐘被表示為733646,而這同一天的中午12點就被表示為73364

詳解FPGA的建立時間保持時間

col 也會 可能 back IV 最小 png 思想 通信 概念對於一個數字系統而言,建立時間和保持時間可以說是基礎中的基礎,這兩個概念就像是數字電路的地基,整個系統的穩定性絕大部分都取決於是否滿足建立時間和保持時間。但是對於絕大部分包括我在內的初學者來說,建立時間和保

python 的class變數使用

python中的變數定義是很靈活的,很容易搞混淆,特別是對於class的變數的定義,如何定義使用類裡的變數是我們維護程式碼和保證程式碼穩定性的關鍵。 #!/usr/bin/python #encoding:utf-8 global_variable_1 = 'global_variable'

修改tensorflow checkpoint內容 TensorFlow 輸出checkpoint 變數變數值

https://blog.csdn.net/qq_33666011/article/details/80522564 看上了兩篇文章~想留著哈哈哈~轉載自 https://blog.csdn.net/qq_32799915/article/detai

C語言變數名及函式名的命名規則駝峰命名法

一、C語言變數名的命名規則:(可以字母,數字,下劃線混合使用) 1. 只能以字母或下劃線開始;2. 不能以數字開始;3. 一般小寫;4. 關鍵字不允許用(eg:int float=2//error  float 為保留字不允許用); 二、函式名的命名規則 1.見名知意;2.自定義函式函式名首字

JavaScript變數提升函式提升

我們先來看下面這一段程式碼 console.log(foo) //undefined var foo = ”test“ 很奇怪對吧,分明foo字串宣告在輸出語句之後,為什麼輸出的結果只是“未找到值”而不是“未找到該變數”呢?別急,我們看接下來的這個例子。 var x = new Date

【三】makefile變數

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

iOS開發技巧之:相簿的GIF圖片的讀取儲存

大家都知道iOS的系統相簿是不支援gif圖片預覽的。但是,這並不代表系統相簿不能儲存和讀取gif圖片。通過Safari長按gif圖片,選擇儲存到相簿,這時儲存到相簿裡的圖片就是gif的,雖然它不會動。 下面將介紹如何對系統相簿進行gif的讀取與儲存。 什麼是 UTI iOS系統相