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

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

Makefile基礎

2019-11-10 18:28:44
字體:
來源:轉載
供稿:網友
Makefile的規則規則的基本格式為:TARGET... : DEPENDEDS...COMMAND......》TARGET: 規則所定義的目標?!稤EPENDEDS:執行此規則所必須的依賴條件。》COMMAND: 規則所執行的命令,即規則的動作。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文件)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴山县| 湘阴县| 衡阳县| 丹巴县| 安多县| 清镇市| 塔河县| 丹阳市| 台江县| 新兴县| 同仁县| 云霄县| 东莞市| 郧西县| 乐安县| 阿拉尔市| 涟水县| 元谋县| 长海县| 江油市| 绵竹市| 开远市| 页游| 垦利县| 托克托县| 鄂温| 博兴县| 奉节县| 海原县| 东至县| 余江县| 华宁县| 蕉岭县| 盖州市| 英吉沙县| 长兴县| 淮安市| 乡城县| 和顺县| 临潭县| 涿州市|