Linux c 开发-10 Makefile用法试验

1-2个代码文件的简单的程序用不用Makefile都没问题,复杂的项目最好用Makefile,下面改造下上面的MakeFile,尽量使用Makefile比较高阶的语法。

1、原始Makefile

test.o:test.c
    gcc test.c -o test.o -lpthread

2、改成使用变量

SRC := test.c
OBJ := test.o
TAR := tt
CC := gcc
$(TAR):$(OBJ)
	$(CC) $(OBJ) -o $(TAR)  -lpthread

这个时候test.o并不存在,但是也能编译成功,看编译过程

 

 会自动执行一句gcc -c -0 test.o  test.c

和下面这种写法效果是一样的

SRC := test.c
OBJ := test.o
TAR := tt
CC := gcc
$(TAR):$(OBJ)
	$(CC) $(OBJ) -o $(TAR)  -lpthread

%.o:%.c
	$(CC) -o  $@ -c $<  -lpthread  

  

$@:目标的名字

$^:构造所需文件列表所有文件的名字

$<:构造所需文件的第一个文件的名字

$?:构造所需文件列表中更新过的文件

3、一个较典型的Makefile文件写法

CC = gcc
INCLUDE = -I ./include  
LIBS   +=  -lpthread  -lzlog 

LIB_PATH += -L ./lib
CFLAGS = -Wall -Wno-unused-function -Wno-unused-variable
OBJS   = test.o config.o 
#OBJS	= *.o
TARGET =  tt

all:$(TARGET)

$(TARGET):$(OBJS)
	$(CC) -o $@ $^ $(LIBS) $(LIB_PATH)
 
 %.o:%.c
	$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDE)

.PHONY: all clean cleanobject
cleanobject:
	rm -rf *.o
clean: 
	rm -rf *.exe *.o tt

  

  

posted @ 2021-03-28 10:57  zhaogaojian  阅读(61)  评论(0编辑  收藏  举报