Makefile文件解析
#common makefile header
#"$(变量)"、"$makefile内置变量"表示变量值
DIR_INC = ../../include #头文件相对路径
DIR_BIN = ../../bin #可执行文件的相对路径
DIR_LIB = ../../libs #库的相对路径
TARGET = iat_online_record_sample #目标变量
BIN_TARGET = $(DIR_BIN)/$(TARGET) #目标变量相对路径
CROSS_COMPILE = #编译器前缀
CFLAGS = -g -Wall -I$(DIR_INC) #编译选项
#可根据实际需要修改,选择所需平台SDK,默认为x64或x86平台。
ifdef LINUX64
LDFLAGS := -L$(DIR_LIB)/x64
else
LDFLAGS := -L$(DIR_LIB)/x86
endif
LDFLAGS += -lmsc -lrt -ldl -lpthread -lasound -lstdc++ #连接库默认选项
#$(wildcard PATTERN):列出当前目录下所有符合模式“PATTERN”格式的文件名
#$(patsubst PATTERN:REPLACEMENT,TEXT):搜索“TEXT”中以空格分开的单词,将否符合模式“TATTERN”替换为“RE-PLACEMENT”
#':=':静态赋值,在使用“:=”定义变量时,变量值中对其他量或者函数的引用在定义变量时被展开(对变量进行替换)
OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c))
#目标:依赖文件
#TAB + 执行命令
#"$^":所有依赖文件
#"$@":目标文件
$(BIN_TARGET) : $(OBJECTS)
$(CROSS_COMPILE)gcc $(CFLAGS) $^ -o $@ $(LDFLAGS)
#"%.o : %.c":遍历所有.c文件,一个一个转换成.o文件
#"$<":第一个依赖文件
%.o : %.c
$(CROSS_COMPILE)gcc -c $(CFLAGS) $< -o $@
#'@':规则的命令行以字符“@”开始,则 make 在执行这个命令时就不会回显这个将要被执行的命令。
clean:
@rm -f *.o $(BIN_TARGET)
.PHONY:clean
#".PHONY:xxx":伪目标标志:伪目标
#common makefile foot
标签:文件,%.,变量,..,Makefile,相对路径,解析,DIR
From: https://www.cnblogs.com/colors-lg/p/18247186