国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Makefile基礎(chǔ)

2019-11-10 18:09:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
Makefile的規(guī)則規(guī)則的基本格式為:TARGET... : DEPENDEDS...COMMAND......》TARGET: 規(guī)則所定義的目標(biāo)。》DEPENDEDS:執(zhí)行此規(guī)則所必須的依賴條件。》COMMAND: 規(guī)則所執(zhí)行的命令,即規(guī)則的動(dòng)作。COMMAND前面的空白是一個(gè)Tab鍵,不是空格。Tab告訴make這是一個(gè)命令行,make執(zhí)行相應(yīng)的動(dòng)作。i、模式匹配前面Makefile中,main.o規(guī)則書(shū)寫(xiě)方式如下:main.o:main.c add/add.h sub/sub.hgcc -c -o main.o main.c -Iadd -Isub有一種簡(jiǎn)便的方法可以實(shí)現(xiàn)與上面相同的功能:main.o:%o:%cgcc -c $< -o $@這種方法的規(guī)則main.o中依賴項(xiàng)中的"%o:%c"的作用是將TARGET域的.o的擴(kuò)展名替換為.c,即將main.o替換為main.c。而命令行的$<表示依賴項(xiàng)的結(jié)果,即main.c: $@表示TARGET域的名稱(chēng),即main.o。j、Makefile中的用戶自定義變量CC = gcc (CC定義成gcc)CFLAGS = -Isub -Iadd -O2 (加入頭文件搜索路徑, O2為優(yōu)化)OBJS = add/add_int.o add/add_float.o /sub/sub_int.o sub/sub_float.o main.oTARGET = cacu (最終生成目標(biāo))RM = rm -f (刪除的命令)$(TARGET):$(OBJS)$(CC) -o $(TARGET) $(OBJS) $(CFLAGS)$(OBJS):%.o:%.c (將OBJS中所有擴(kuò)展名為.o的文件替換成擴(kuò)展名為.c的文件)$(CC) -c $(CFLAGS) $< -o $@ (編譯生成目標(biāo)文件)clean:-$(RM) $(TARGET) $(OBJS) (最前面的“-”是為了防止刪除的文件不存在時(shí)會(huì)報(bào)錯(cuò))以上例子可簡(jiǎn)化為:CFLAGS = -Isub -Iadd -O2OBJS = add/add_int.o add/add_float.o /sub/sub_int.o sub/sub_float.o main.oTARGET = cacu$(TARGET):$(OBJS)$(CC) -o $(TARGET) $(OBJS) $(CFLAGS)clean:-$(RM) $(TARGET) $(OBJS)重寫(xiě)以上Makefile:CFLAGS = -Isub -Iadd -O2OBJS = add/add_int.o add/add_float.o /sub/sub_int.o sub/sub_float.o main.oTARGET = cacu$(TARGET):$(OBJS)$(CC) -o $@ $^ $(CFLAGS) $(OBJS):%.o:%.c$(CC) $< -c $(CFLAGS) -o $@clean:-$(RM) $(TARGET) $(OBJS)k、搜索路徑VPATH=path1:path2:...VPATH右邊是冒號(hào)(:)分隔的路徑名稱(chēng)。例如:VPATH=add:sub (加入add和sub搜索路徑)可以將上面的例子再改寫(xiě)下:CFLAGS = -Isub -Iadd -O2OBJSDIR = .objsVPATH=add:sub:.OBJS = add_int.o add_float.o sub_int.o sub_float.o main.oTARGET = cacu$(TARGET):$(OBJSDIR) $(OBJS) (要執(zhí)行TARGET的命令,先查看OBJSDIR和OBJS依賴 項(xiàng)是否存在)$(CC) -o $(TARGET) $(OBJSDIR)/*.o $(CFLAGS) (將OBJSDIR目錄中所有的.o文件鏈接成cacu)$(OBJS):%.o:%.c (將擴(kuò)展名為.o的文件替換成擴(kuò)展名為.c的文件)$(CC) -c $(CFLAGS) $< -o $(OBJSDIR)/$@ (生成目標(biāo)文件,存放在OBJSDIR目錄中)$(OBJSDIR):mkdir -p ./$@ (建立目錄,-p選項(xiàng)可以忽略父目錄不存在的錯(cuò)誤)clean:-$(RM) $(TARGET) (刪除cacu)-$(RM) $(OBJSDIR)/*.o (刪除OBJSDIR下的所有.o文件)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 上饶市| 尉氏县| 忻州市| 正镶白旗| 五河县| 玉林市| 古丈县| 囊谦县| 洛宁县| 安远县| 平果县| 博爱县| 双峰县| 项城市| 九龙城区| 太仆寺旗| 辽阳县| 游戏| 北川| 德兴市| 简阳市| 绥棱县| 翁源县| 珲春市| 积石山| 衢州市| 台北市| 桓仁| 台安县| 淮滨县| 浮梁县| 孝感市| 浪卡子县| 循化| 南和县| 永昌县| 宣武区| 松溪县| 桂东县| 子洲县| 乐清市|