新聞中心

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

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

        作者: 時間:2013-09-13 來源:網絡 收藏


        本文引用地址:http://www.104case.com/article/257149.htm

        3.5.3makefile規則

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


        1.隱式規則

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


        OBJS=kang.oyul.o

        CC=gcc

        CFLAGS=-Wall-O-g

        david:$(OBJS)

        $(CC)$^-o$@

        為什么可以省略后兩句呢?因為make的隱式規則指出:所有“.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”來生成。


        注意

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


        表3.17給出了常見的隱式規則目錄。

        表3.17 makefile中常見隱式規則目錄

        對應語言后綴名

        隱式規則

        C編譯:.c變為.o

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

        C++編譯:.cc或.C變為.o

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

        Pascal編譯:.p變為.o

        $(PC)-c$(PFLAGS)

        Fortran編譯:.r變為-o

        $(FC)-c$(FFLAGS)

        2.模式規則

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


        模式規則的格式類似于普通規則,這個規則中的相關文件前必須用“%”標明。使用模式規則修改后的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

        忽略所有的命令執行錯誤

        -Idir

        指定被包含的makefile所在目錄

        -n

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

        -p

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

        -s

        在執行命令時不顯示命令

        -w

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


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

        linux相關文章:linux教程



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 秦皇岛市| 历史| 通州市| 博湖县| 微山县| 蓝山县| 格尔木市| 桐庐县| 阳曲县| 务川| 娄底市| 青海省| 盐亭县| 土默特右旗| 黔江区| 江山市| 景谷| 青州市| 西藏| 海门市| 织金县| 延川县| 出国| 津市市| 历史| 乌海市| 新建县| 吉安县| 莒南县| 绍兴市| 遂川县| 商丘市| 东至县| 南雄市| 宜章县| 诸城市| 安庆市| 灵石县| 芷江| 文昌市| 五河县|