Makefile
# Makefile
#Makefile,使用时库文件,源文件依次单独编译,保留相关项
############源文件目录 头文件目录 库文件目录#######################
DIR_SRC=
DIR_INC=
DIR_LIB=
DIR_BIN=
#############可执行文件 库文件 执行生成文件##########################
#可执行文件名#
BIN=
#库文件名#
LIB_BIN=$(DIR_LIB)/libexample.a
#生成文本文件#
FILE=
#########################命令和参数################################
#编译命令 参数
CC=gcc
CXX=g++
AR=ar -rc
CFLAG=-g -c
LFLAG=-L $(DIR_LIB) -lexample -lm
#删除命令
RM=rm -f
#########################生成静态库文件(可选)########################
LIB_SRC=$(wildcard $(DIR_LIB)/*.c)
LIB_OBJ=$(patsubst %.c,%.o,$(LIB_SRC))
#生成库文件
$(LIB_BIN):$(LIB_OBJ)
$(AR) $@ $^
#编译库文件->二进制文件
$(DIR_LIB)/%.o:$(DIR_LIB)/%.c
$(CC) $(CFLAG) -I$(DIR_INC) -o $@ $<
#########################生成可执行文件(可选)########################
#生成可执行文件
SRC=$(wildcard $(DIR_SRC)/*.c)
OBJ=$(patsubst %.c,%.o,$(SRC))
##链接生成可执行文件
$(BIN):$(OBJ)
$(CC) -o $@ $^ $(LFLAG)
##编译源文件->二进制文件
$(DIR_SRC)/%.o:$(DIR_SRC)/%.c
$(CC) $(CFLAG) -I$(DIR_INC) -o $@ $<
############################目录内清理################################
clean:
$(RM) $(FILE) $(BIN) $(OBJ) $(LIB_OBJ)
#全局联合编译Makefile,-C指令依次执行编译和清理
# make -C ./lib
# make -C ./src
#clean:
# make clean -C ./lib
# make clean -C ./src