zoukankan      html  css  js  c++  java
  • 使用makefile入门使用方法,一个规则,两个函数,三个自动变量

    Makefile入门

    • makefile命名: makefile 或者 Makefile

    • 1个规则

      • 目标:依赖条件

        • (一个tab缩进)命令

        • 目标的时间必须晚于依赖条件的时间,否则就会更新目标

        • 依赖条件如果不存在,找寻新的规则去产生依赖

        • makefile会默认把第一条指令当做最终目标

        • 可以使用ALL:a.out,来指定最终的生成目标

    • 2个函数

      • 函数:wildcard
        • src = $(wildcard *.c) == ( src = add.c div1.c hello.c sub.c)
        • 匹配当前工作目录下所有的.c文件,将文件名组成列表,赋值给变量src
      • 函数:patsubst
        • 将参数3中,包含参数1的部分,替换成参数2
        • obj = $(patsubst %.c, %.o, $(src))
        • obj = add.o sub.o div1.o
        • clean:
          • rm -rf ${obj}
          • 使用 make clean -n 这里使用-n可以模拟一下看看哪些要删的
    • 3个自动变量

      • $@: 在规则命令中表示规则中的目标

      • $^: 在规则的命令中,表示所有的依赖条件

      • $<:在规则的命令中,表示第一个依赖条件,如果该变量应用在模式规则中,它可以依赖条件列表中依赖依次去除,套用模式规则。

        src = $(wildcard *.c)  #add.c sub.c div1.c hello.c
        
        obj = $(patsubst %.c, %.o, $(src)) # add.o sub.o div1.o hello.o
        
        ALL:a.out
        
        a.out:$(obj)
        	gcc $^ -o $@
        
        hello.o:hello.c
        	gcc -c $< -o $@
        
        add.o:add.c
        	gcc -c $< -o $@
        
        sub.o:sub.c
        	gcc -c $< -o $@
        
        div1.o:div1.c
        	gcc -c $< -o $@
        
        clean: 
        	-rm -rf $(obj) a.out
        
    • 模式规则:

      • %.o:%c可以替换下面所有

        %.o:%.c
        	gcc -c $< -o %@
        
        hello.o:hello.c
        	gcc -c $< -o $@
        
        add.o:add.c
        	gcc -c $< -o $@
        
        sub.o:sub.c
        	gcc -c $< -o $@
        
        div1.o:div1.c
        	gcc -c $< -o $@
        
    • 静态模式规则:

      • $(obj):%o:%c
        • gcc -c $< -o %@
    • 伪目标

      • .PHONY: clean ALL
    • 可以加警告和调试

      • myargs = -Wall -g

        gcc -c $< -o $@ $(myargs)

  • 相关阅读:
    图床_shell命令passwd
    图床_shell命令usermod
    图床_shell命令groupadd
    图床_shell命令userdel
    图床_shell命令useradd
    图床_shell命令whereis
    图床_shell命令find
    图床_shell命令which
    图床_shell命令locate
    图床_shell命令free
  • 原文地址:https://www.cnblogs.com/fandx/p/12518191.html
Copyright © 2011-2022 走看看