首页 > 其他 > 详细

使用makefile入门使用方法,一个规则,两个函数,三个自动变量

时间:2020-03-18 18:12:48      阅读:47      评论:0      收藏:0      [点我收藏+]

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)

使用makefile入门使用方法,一个规则,两个函数,三个自动变量

原文:https://www.cnblogs.com/fandx/p/12518191.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!