Makefile && shell

來源:互聯網
上載者:User

以下均來自網路收集,自己整理了一下,只整理了以前不熟悉,而目前會用到的一些東西:
一:Makefile中變數定義的方式:
 1.遞迴展開方式,遞迴展開方式定義的變數是在引用在該變數時進行替換的,即如果該變數包含了對其他變數的應用,則在引用該變數時一次性將內嵌的變數全部展開,雖然這種類型的變數能夠很好地完成使用者的指令,但是它也有嚴重的缺點,如不能在變數後追加內容(因為語句:CFLAGS
= $(CFLAGS) -O在變數擴充過程中可能導致無窮迴圈)。
 2.簡單方式。用:=定義。為了避免上述問題,簡單擴充型變數的值在定義處展開,並且只展開一次,因此它不包含任何對其它變數的引用,從而消除變數的嵌套引用。
 3.用?=定義變數,它的含義是如果變數還沒定義 ,即如果使用者不定義,就提供給他預設的。

 舉例說明遞迴展開與簡單方式定義的區別:

CFLAGS:=-WallCFLAGS:=$(CFLAGS)all:      echo $(CFLAGS) 對於以上Makefile,執行make後echo輸出-Wall CFLAGS=-Wall CFLAGS=$(CFLAGS) all:      echo $(CFLAGS)  執行make後echo輸出:Makefile:2:***Recursive variable `CFLAGS

GNU make 的主要預定義變數:

預定義變數                      含義

$*              不包含副檔名的目標檔案名稱。

$+              所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。

$<              第一個依賴檔案的名稱。

$?              所有的依賴檔案,以空格分開,這些依賴檔案的修改日期比目標的建立日期晚。

$@              目標的完整名稱。

$^              所有的依賴檔案,以空格分開,不包含重複的依賴檔案。

$%              如果目標是歸檔成員,則該變數表示目標的歸檔成員名稱。例如,如果目標名稱

                為 mytarget.so(image.o),則 $@ 為 mytarget.so,而 $% 為 image.o。

AR              歸檔維護程式的名稱,預設值為 ar。

ARFLAGS         歸檔維護程式的選項。

AS              組譯工具的名稱,預設值為 as。

ASFLAGS         組譯工具的選項。

CC              C 編譯器的名稱,預設值為 cc。

CCFLAGS         C 編譯器的選項。

CPP             C 先行編譯器的名稱,預設值為 $(CC) -E。

CPPFLAGS        C 先行編譯的選項。

CXX             C++ 編譯器的名稱,預設值為 g++。

CXXFLAGS        C++ 編譯器的選項。

FC              FORTRAN 編譯器的名稱,預設值為 f77。

FFLAGS          FORTRAN 編譯器的選項。


參考:http://www.aka.org.cn/Lectures/001/Lecture-1/make.html 

            http://hi.chinaunix.net/?uid-14782631-action-viewspace-itemid-10165

http://www.sudu.cn/info/html/edu/20080407/264139.html

http://blog.csdn.net/lijierson8/article/details/6283040

http://www.worldhello.net/doc/makefile_howto/makefile_howto.mm.htm

經典的shell教程:《Linux Shell Scripting with Bash》—Ken O.Brutch的翻譯

使用Bash編寫Linux Shell指令碼-6.運算式

http://blog.csdn.net/fox_lht/article/details/5894940


陳皓專欄:

http://blog.csdn.net/haoel

http://coolshell.cn/

經典的makefile教程:跟我一起寫makefile

http://blog.csdn.net/haoel/article/details/2886(http://www.chinaunix.net/jh/23/408225.html)

+

http://wenku.baidu.com/view/4a171e6a25c52cc58bd6be6b.html

GCC常用編譯選項:最佳化選項的功能

http://blog.csdn.net/iterzebra/article/details/6203067

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.