新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Linux下C編程基礎之:make工程管理器

Linux下C編程基礎之:make工程管理器

作者: 時間:2013-09-13 來源:網(wǎng)絡 收藏


本文引用地址:http://m.butianyuan.cn/article/257149.htm

3.5.3makefile規(guī)則

makefile的規(guī)則是make進行處理的依據(jù),它包括了目標體、依賴文件及其之間的命令語句。在上面的例子中,都顯式地指出了makefile中的規(guī)則關系,如“$(CC)$(CFLAGS)-c$-o$@”,但為了簡化makefile的編寫,make還定義了隱式規(guī)則和模式規(guī)則,下面就分別對其進行講解。


1.隱式規(guī)則

隱含規(guī)則能夠告訴make怎樣使用傳統(tǒng)的規(guī)則完成任務,這樣,當用戶使用它們時就不必詳細指定編譯的具體細節(jié),而只需把目標文件列出即可。make會自動搜索隱式規(guī)則目錄來確定如何生成目標文件。如上例就可以寫成:


OBJS=kang.oyul.o

CC=gcc

CFLAGS=-Wall-O-g

david:$(OBJS)

$(CC)$^-o$@

為什么可以省略后兩句呢?因為make的隱式規(guī)則指出:所有“.o”文件都可自動由“.c”文件使用命令“$(CC)$(CPPFLAGS)$(CFLAGS)-cfile.c–ofile.o”來生成。這樣“kang.o”和“yul.o”就會分別通過調用“$(CC)$(CFLAGS)-ckang.c-okang.o”和“$(CC)$(CFLAGS)-cyul.c-oyul.o”來生成。


注意

在隱式規(guī)則只能查找到相同文件名的不同后綴名文件,如“kang.o”文件必須由“kang.c”文件生成。


表3.17給出了常見的隱式規(guī)則目錄。

表3.17 makefile中常見隱式規(guī)則目錄

對應語言后綴名

隱式規(guī)則

C編譯:.c變?yōu)?o

$(CC)–c$(CPPFLAGS)$(CFLAGS)

C++編譯:.cc或.C變?yōu)?o

$(CXX)-c$(CPPFLAGS)$(CXXFLAGS)

Pascal編譯:.p變?yōu)?o

$(PC)-c$(PFLAGS)

Fortran編譯:.r變?yōu)?o

$(FC)-c$(FFLAGS)

2.模式規(guī)則

模式規(guī)則是用來定義相同處理規(guī)則的多個文件的。它不同于隱式規(guī)則,隱式規(guī)則僅僅能夠用make默認的變量來進行操作,而模式規(guī)則還能引入用戶自定義變量,為多個文件建立相同的規(guī)則,從而簡化makefile的編寫。


模式規(guī)則的格式類似于普通規(guī)則,這個規(guī)則中的相關文件前必須用“%”標明。使用模式規(guī)則修改后的makefile的編寫如下:


OBJS=kang.oyul.o

CC=gcc

CFLAGS=-Wall-O-g

david:$(OBJS)

$(CC)$^-o$@

%.o:%.c

$(CC)$(CFLAGS)-c$-o$@


3.5.4make管理器的使用

使用make管理器非常簡單,只需在make命令的后面鍵入目標名即可建立指定的目標,如果直接運行make,則建立makefile中的第一個目標。


此外make還有豐富的命令行選項,可以完成各種不同的功能。表3.18列出了常用的make命令行選項。

表3.18 make的命令行選項

命令格式

含義

-Cdir

讀入指定目錄下的makefile

-ffile

讀入當前目錄下的file文件作為makefile

-I

忽略所有的命令執(zhí)行錯誤

-Idir

指定被包含的makefile所在目錄

-n

只打印要執(zhí)行的命令,但不執(zhí)行這些命令

-p

顯示make變量數(shù)據(jù)庫和隱含規(guī)則

-s

在執(zhí)行命令時不顯示命令

-w

如果make在執(zhí)行過程中改變目錄,則打印當前目錄名


linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

linux相關文章:linux教程



上一頁 1 2 3 下一頁

評論


相關推薦

技術專區(qū)

關閉