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

首頁 > 學院 > 開發設計 > 正文

Makefile基礎

2019-11-10 17:46:27
字體:
來源:轉載
供稿:網友
Makefile的規則規則的基本格式為:TARGET... : DEPENDEDS...COMMAND......》TARGET: 規則所定義的目標。》DEPENDEDS:執行此規則所必須的依賴條件?!稢OMMAND: 規則所執行的命令,即規則的動作。COMMAND前面的空白是一個Tab鍵,不是空格。Tab告訴make這是一個命令行,make執行相應的動作。i、模式匹配前面Makefile中,main.o規則書寫方式如下:main.o:main.c add/add.h sub/sub.hgcc -c -o main.o main.c -Iadd -Isub有一種簡便的方法可以實現與上面相同的功能:main.o:%o:%cgcc -c $< -o $@這種方法的規則main.o中依賴項中的"%o:%c"的作用是將TARGET域的.o的擴展名替換為.c,即將main.o替換為main.c。而命令行的$<表示依賴項的結果,即main.c: $@表示TARGET域的名稱,即main.o。j、Makefile中的用戶自定義變量CC = gcc (CC定義成gcc)CFLAGS = -Isub -Iadd -O2 (加入頭文件搜索路徑, O2為優化)OBJS = add/add_int.o add/add_float.o /sub/sub_int.o sub/sub_float.o main.oTARGET = cacu (最終生成目標)RM = rm -f (刪除的命令)$(TARGET):$(OBJS)$(CC) -o $(TARGET) $(OBJS) $(CFLAGS)$(OBJS):%.o:%.c (將OBJS中所有擴展名為.o的文件替換成擴展名為.c的文件)$(CC) -c $(CFLAGS) $< -o $@ (編譯生成目標文件)clean:-$(RM) $(TARGET) $(OBJS) (最前面的“-”是為了防止刪除的文件不存在時會報錯)以上例子可簡化為: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)重寫以上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右邊是冒號(:)分隔的路徑名稱。例如:VPATH=add:sub (加入add和sub搜索路徑)可以將上面的例子再改寫下: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) (要執行TARGET的命令,先查看OBJSDIR和OBJS依賴 項是否存在)$(CC) -o $(TARGET) $(OBJSDIR)/*.o $(CFLAGS) (將OBJSDIR目錄中所有的.o文件鏈接成cacu)$(OBJS):%.o:%.c (將擴展名為.o的文件替換成擴展名為.c的文件)$(CC) -c $(CFLAGS) $< -o $(OBJSDIR)/$@ (生成目標文件,存放在OBJSDIR目錄中)$(OBJSDIR):mkdir -p ./$@ (建立目錄,-p選項可以忽略父目錄不存在的錯誤)clean:-$(RM) $(TARGET) (刪除cacu)-$(RM) $(OBJSDIR)/*.o (刪除OBJSDIR下的所有.o文件)
上一篇:樹-堆結構

下一篇:LZOI-二分圖匹配例題

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潍坊市| 苏尼特右旗| 建瓯市| 巴楚县| 罗城| 利川市| 方山县| 土默特左旗| 墨江| 新晃| 宾川县| 紫金县| 汨罗市| 闽清县| 囊谦县| 临颍县| 昌黎县| 英山县| 博客| 当阳市| 子长县| 邵武市| 南乐县| 文山县| 太原市| 柳州市| 惠东县| 蒙山县| 济南市| 庆元县| 盱眙县| 休宁县| 体育| 桃园县| 大埔区| 博白县| 和硕县| 五大连池市| 元阳县| 大洼县| 政和县|