初学makefile

 

bin  include  func  main  view  makefile  objs  主目录makefile:通过指令—C读取下面目录中
                                                               makefile
./bin:             执行文件夹 执行文件名test
test

./include:         头文件文件夹(包含系统头文件与自定义头文件)
func.h

./func:            子函数功能
func.c  makefile

./view:            界面函数
view.c makefile  

./main:            主函数
main.c  makefile

./objs:            存放生成执行文件的依赖的点o文件 test:func.o main.o view.o
func.o  main.o  view.o makefile 

简单的理解就是主目录中的makefile 读取次目录下面的makefile(可以理解为函数的调用)

OBJS=func.o main.o view.o    首先先定义编译过程生成执行文件的依赖的变量
OBJS_DIR=objs                定义存放的点o文件夹
BIN_DIR=bin                  定义存放的执行文件夹
BIN=test                     定义执行文件的名称              


CFLAGS=-I ../include -c -g -Wall              定义gcc编译的命令选项并且指定头文件的读取目录
                                              此处注意一定是上级目录中的include,因为编译是 
                                              在次目录编译的(在包含点c文件的文件夹下编译的)     

DIRS=func main view objs                      定义所有包含makefile文件的文件夹
                                              -C读取是按照顺序来的,所有objs目录放在最后面
                                              objs里面的点o文件是最后执行并且生成执行文件的

export OBJS OBJS_DIR BIN BIN_DIR CFLAGS DIRS  定义为全局变量(共享变量,如果不指定变量则默认共
                                                            享全部变量)

all:CHECK_DIR $(DIRS)        神奇的all目标(执行make 与make all效果一样)
CHECK_DIR:
	mkdir -p $(BIN_DIR)      创建执行文件夹bin
$(DIRS):ECHO
	make -C $@               依次读取DIRS中得makefile文件
ECHO:
	@echo $(DIRS)

.PHONY:clean                 删除文件并且忽略伪文件
clean:
	@rm -rf $(OBJS_DIR)/*.o  删除objs下面的所有点o文件
	@rm -rf $(BIN_DIR)       删除创建的bin执行目录(包括里面的执行文件)

你可能感兴趣的:(linux,linuxC语言初学者,makefile)