##################编译器######################################
CC = gcc
##################可执行文件###################################
PROJECT_NAME = app
##################项目路径#####################################
PROJEXT_PATH = PROJECT/EXE
OBJ_PATH := PROJECT/OBJ
HXX_INCLUDES_PATH = HAL/HELLO
CXX_SOURCES_PATH = APL HAL/HELLO
##################收集需要编译的源文件##########################
CXX_SOURCES = $(foreach dir, $(CXX_SOURCES_PATH), $(wildcard $(dir)/*.c))
##################将所有.c文件替换成.o文件,并指定.o文件放到指定目录下##############
CXX_OBJCTS = $(patsubst %.c,$(OBJ_PATH)/%.o,$(notdir $(CXX_SOURCES)))
##################定义.c文件的搜索路径#########################################
VPATH = $(CXX_SOURCES_PATH)
#############收集需要编译的头文件#############################################
CFLAGS=$(patsubst %,-I%,$(HXX_INCLUDES_PATH))
HXX_INCLUDES = $(foreach dir,$(HXX_INCLUDES_PATH),$(wildcard $(dir)/*.h))
###############链接成可执行文件##############################################
$(PROJEXT_PATH)/$(PROJECT_NAME):$(CXX_OBJCTS) | create_exe
$(CC) $^ -o $@
#################生成.o文件#################################################
###################CFLAGS放在后面##########################################
$(OBJ_PATH)/%.o:%.c $(HXX_INCLUDES) | create_obj
$(CC) -c $< -o $@ $(CFLAGS)
#####################定义伪目标#############################################
.PHONE:create_obj create_exe clean
####################清除EXE、OBJ文件#######################################
clean:
rm -r $(PROJEXT_PATH) $(OBJ_PATH)
create_obj:
mkdir -p $(OBJ_PATH)
create_exe:
mkdir -p $(PROJEXT_PATH)
linux-makefile文件
于 2023-09-27 13:34:06 首次发布