国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 克什克腾旗| 深水埗区| 勃利县| 朝阳市| 保德县| 抚宁县| 泸水县| 万安县| 涟源市| 扎赉特旗| 新民市| 上林县| 夹江县| 高台县| 平山县| 太白县| 略阳县| 清远市| 丰城市| 镇坪县| 肃宁县| 长沙县| 仁布县| 招远市| 青海省| 景泰县| 福建省| 寿光市| 蓬溪县| 东乡族自治县| 含山县| 江山市| 连云港市| 杭锦旗| 桂林市| 元朗区| 正蓝旗| 唐海县| 兴国县| 霍邱县| 东阳市|