美文网首页
编写Makefile及简单分析

编写Makefile及简单分析

作者: 温暖春阳 | 来源:发表于2018-03-31 10:27 被阅读13次
    makefile的好处:一次编写,终身受益
    makefile的命名规则:
    • makefile
    • Makefile
    makefile的三要素:
    • 目标
    • 依赖
    • 规则命令
    写法:

    目标:依赖
    tab键规则命令

    #get all .c files 
    SrcFiles=$(wildcard *.c)
    #all .c files --> .o files 
    ObjFiles=$(patsubst %.c,%.o,$(SrcFiles))
    
    all:app app1
    
    #目标文件用法 $(Var)
    app:$(ObjFiles)
        gcc -o $@ -I./include $(ObjFiles)
    
    app1:$(ObjFiles)
        gcc -o $@ -I./include $(ObjFiles)
    #模式匹配规则,$@,$< 这样的变量,只能在规则中出现
    %.o:%.c
        gcc  -c $<  -I./include -o $@ 
    
    test:
        @echo $(SrcFiles)
        @echo $(ObjFiles1)
    
    #定义伪目标,防止有歧义
    .PHONY:clean all 
    
    clean:
        -@rm -f *.o 
        -@rm -f app app1 
    
    目录结构.png

    可以定义变量 ObjFiles=main.o add.o sub.o div.o …
    变量的使用:$(ObjFiles),$(变量名)

    makefile的隐含规则:默认处理第一个目标

    函数:

    • wildcard 可以进行文件匹配
    • patsubst 内容的替换

    Makefile的变量:

    • $@ 代表目标
    • $^ 代表全部依赖
    • $< 第一个依赖
    • $? 第一个变化的依赖

    @在规则前代表不输出该条规则的命令
    规则前的"-",代表该条规则报错,仍然继续执行

    定义伪目标:all
    使用.PHONY 防止目标有歧义
    使用-f 强制删除

    相关文章

      网友评论

          本文标题:编写Makefile及简单分析

          本文链接:https://www.haomeiwen.com/subject/ljhgcftx.html