概述
https://www.gnu.org/software/make/manual/html_node/
make命令
make进行编译
make执行shell命令
make伪目标
变量(宏)
隐含规则
特殊符号
条件判断
#:=表示恒等于,注释不要写到代码后面
TARGET := app
CC := gcc
#包含目录
INCLUDE = .
#生成的目标文件
OBJS = main.o fun.o
#1.目标下不能有空格
#ifeq和表达式必须有空格
#if结来必须enddif
test:
ifeq ($(CC) , gcc)
@echo "CC is gcc"
else
@echo "CC is not gcc"
endif
#:=表示恒等于,注释不要写到代码后面
TARGET := app
CC := gcc
#包含目录
INCLUDE = .
#生成的目标文件
OBJS = main.o fun.o
#如果定义DEBUG变量,那么就加入. g调试选项
ifdef DEBUG
CFLAGE += -g
endif
#如果没有定义release
ifndef RELEASE
CFLAGE += -g
endif
#1.目标下不能有空格
#ifeq和表达式必须有空格
#if结来必须enddif
test:
ifeq ($(CC) , gcc)
@echo "CC is gcc"
else
@echo "CC is not gcc"
endif
#函数调用格式$(函数名函数参数1函数参数2)
#调用makefile中的shell函数 , 调用pwd命令, 将结果赋值给CURPATH变量
CURPATH = $(shell pwd)
SRC = $(wildcard *.c)
test:
echo "当前目录: $(CURPATH)"
test1:
# subst格式from, to, text
#从text中找到from字符。替换成to
echo $(subst aa,AA,aabbccddee)
test2:
#模式匹配,从text中按pattern模式查找,替换成replace
echo $(patsubst %.c,%.o, x.c.c bar.c)
test3:
#去除开始和未尾的空格,合并中间空格
echo $(strip "hello xsda")
#p匹配当前目录下所有.c文件
test4:
echo $(SRC)