新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 闵行区| 金平| 南乐县| 徐汇区| 邹平县| 辽阳市| 班玛县| 普陀区| 平凉市| 临江市| 德江县| 马边| 开化县| 云阳县| 兰州市| 和田县| 张北县| 白银市| 阜新市| 农安县| 富源县| 类乌齐县| 荥经县| 洞头县| 集安市| 水富县| 新余市| 卓资县| 蒙自县| 光山县| 都兰县| 光泽县| 武定县| 馆陶县| 个旧市| 中超| 穆棱市| 慈利县| 安宁市| 竹北市| 罗源县|