欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用make实现的小型c/c++可复用编译器

程序员文章站 2022-05-13 15:09:27
...

目录结构

用make实现的小型c/c++可复用编译器

源码实现

.PHONY : all clean

DIR_BUILD := build
DIR_SRC := src        #源代码文件夹名
DIR_INC := inc        #头文件文件夹名

TYPE_INC := .h
TYPE_SRC := .c    #当为C++文件是改为.cpp
TYPE_OBJ := .o

CC := gcc           #编译C++代码是改为g++
LFLAGS :=          #如有编译选项,则在这里添加,如-pthread
CFLAGS := -I $(DIR_INC)
ifeq ($(DEBUG),true)             #DEBUG版本编译
CFLAGS += -g
endif

MKDIR := mkdir
RM := rm -fr

APP := $(DIR_BUILD)/app.out
HDRS := $(wildcard $(DIR_INC)/*$(TYPE_INC))
HDRS := $(notdir $(HDRS))
OBJS := $(wildcard $(DIR_SRC)/*$(TYPE_SRC))
OBJS := $(OBJS:$(TYPE_SRC)=$(TYPE_OBJ))
OBJS := $(patsubst $(DIR_SRC)/%, $(DIR_BUILD)/%, $(OBJS))

vpath %$(TYPE_INC) $(DIR_INC)
vpath %$(TYPE_SRC) $(DIR_SRC)

all : $(DIR_BUILD) $(APP)
	@echo "Target File ==> $(APP)"
	
$(DIR_BUILD) :
	$(MKDIR) aaa@qq.com
	
$(APP) : $(OBJS)
	$(CC) $(LFLAGS) -o aaa@qq.com $^
	
$(DIR_BUILD)/%$(TYPE_OBJ) : %$(TYPE_SRC) $(HDRS)
	$(CC) $(CFLAGS) -o aaa@qq.com -c $<
	
clean :
	$(RM) $(DIR_BUILD)
	

本文为狄泰软件学院课程学习笔记

相关标签: make