概述

image.pnghttps://www.gnu.org/software/make/manual/html_node/image.png

make命令

image.png
image.png
image.pngimage.png

make进行编译

image.png
image.png

make执行shell命令

image.png
image.png

make伪目标

image.png
image.png
image.png

变量(宏)

image.png
image.png
image.png

隐含规则

image.png

特殊符号

image.png
image.png
image.png

条件判断

image.png
image.png

  1. #:=表示恒等于,注释不要写到代码后面
  2. TARGET := app
  3. CC := gcc
  4. #包含目录
  5. INCLUDE = .
  6. #生成的目标文件
  7. OBJS = main.o fun.o
  8. #1.目标下不能有空格
  9. #ifeq和表达式必须有空格
  10. #if结来必须enddif
  11. test:
  12. ifeq ($(CC) , gcc)
  13. @echo "CC is gcc"
  14. else
  15. @echo "CC is not gcc"
  16. endif

image.png

  1. #:=表示恒等于,注释不要写到代码后面
  2. TARGET := app
  3. CC := gcc
  4. #包含目录
  5. INCLUDE = .
  6. #生成的目标文件
  7. OBJS = main.o fun.o
  8. #如果定义DEBUG变量,那么就加入. g调试选项
  9. ifdef DEBUG
  10. CFLAGE += -g
  11. endif
  12. #如果没有定义release
  13. ifndef RELEASE
  14. CFLAGE += -g
  15. endif
  16. #1.目标下不能有空格
  17. #ifeq和表达式必须有空格
  18. #if结来必须enddif
  19. test:
  20. ifeq ($(CC) , gcc)
  21. @echo "CC is gcc"
  22. else
  23. @echo "CC is not gcc"
  24. endif

image.png
image.png

  1. #函数调用格式$(函数名函数参数1函数参数2)
  2. #调用makefile中的shell函数 , 调用pwd命令, 将结果赋值给CURPATH变量
  3. CURPATH = $(shell pwd)
  4. SRC = $(wildcard *.c)
  5. test:
  6. echo "当前目录: $(CURPATH)"
  7. test1:
  8. # subst格式from, to, text
  9. #从text中找到from字符。替换成to
  10. echo $(subst aa,AA,aabbccddee)
  11. test2:
  12. #模式匹配,从text中按pattern模式查找,替换成replace
  13. echo $(patsubst %.c,%.o, x.c.c bar.c)
  14. test3:
  15. #去除开始和未尾的空格,合并中间空格
  16. echo $(strip "hello xsda")
  17. #p匹配当前目录下所有.c文件
  18. test4:
  19. echo $(SRC)

image.png
image.png

循环

image.png
image.png

嵌套

image.png
image.png
image.png
image.png
image.png
image.png
image.png