<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò ) 收藏


本文引用地址:http://dyxdggzs.com/article/257149.htm

3.5.3makefile規則

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


1.隱式規則

隱含規則能夠告訴make怎樣使用傳統的規則完成任務(wù),這樣,當用戶(hù)使用它們時(shí)就不必詳細指定編譯的具體細節,而只需把目標文件列出即可。make會(huì )自動(dòng)搜索隱式規則目錄來(lái)確定如何生成目標文件。如上例就可以寫(xiě)成:


OBJS=kang.oyul.o

CC=gcc

CFLAGS=-Wall-O-g

david:$(OBJS)

$(CC)$^-o$@

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


注意

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


表3.17給出了常見(jiàn)的隱式規則目錄。

表3.17 makefile中常見(jiàn)隱式規則目錄

對應語(yǔ)言后綴名

隱式規則

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.模式規則

模式規則是用來(lái)定義相同處理規則的多個(gè)文件的。它不同于隱式規則,隱式規則僅僅能夠用make默認的變量來(lái)進(jìn)行操作,而模式規則還能引入用戶(hù)自定義變量,為多個(gè)文件建立相同的規則,從而簡(jiǎn)化makefile的編寫(xiě)。


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


OBJS=kang.oyul.o

CC=gcc

CFLAGS=-Wall-O-g

david:$(OBJS)

$(CC)$^-o$@

%.o:%.c

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


3.5.4make管理器的使用

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


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

表3.18 make的命令行選項

命令格式

含義

-Cdir

讀入指定目錄下的makefile

-ffile

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

-I

忽略所有的命令執行錯誤

-Idir

指定被包含的makefile所在目錄

-n

只打印要執行的命令,但不執行這些命令

-p

顯示make變量數據庫和隱含規則

-s

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

-w

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


linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程



上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>