# 现有一个ipmsg项目
# .c文件有pthread.c socket_init.c use_data.c main.c
# 头文件有:pthread.h socket_init.h use_data.h
# 上边.c 文件中只有main.c自己的头文件
# 使用这个makefile时,一个.c对应一个同名的.h文件 不包含.h的.c文件需额外支出
# 以后多文件编译时,直接套用这个模版就可以了。
# 推荐操作: 每次make时最好make clean
TARGET=ipmsg #【要生成可执行文件名】
#【这里填入需要编译的文件对应的.o文件名,这里的.c文件对应一个.h】
OBJ=pthread.o socket_init.o use_data.o
CFLAG=-Wall -g -w#【编译选项】
OBJ_NO_H=main.o #【只有.c没有对应.h文件写在这里,写成对应的.o文件】
CC=gcc#【编译器】
LIBS= -lpthread#【需要加入的额外库文件】
## 输出样式 与编译无关
OFFSET=\x1b[41G
COLOR=\x1b[1;34m
RESET=\x1b[0m
CLEAR=\x1b[H\x1b[J
## 以后的不用修改
$(TARGET): $(OBJ_NO_H) $(OBJ)
@echo -n "Generating $@..."
@if $(CC) $(CFLAG) -o $@ $^ $(LIBS); then echo -e "$(OFFSET)$(COLOR)[ OK ]$(RESET)"; fi
%.o: %.c %.h
@echo -n "Compiling $<..."
@if $(CC) $(CFLAG) -c -o $@ $<; then echo -e "$(OFFSET)$(COLOR)[ OK ]$(RESET)"; else exit 1; fi
clean:
@echo -n "Cleanning up..."
@rm -rf *.o *.bak *~ $(TARGET)
@echo -e "$(OFFSET)$(COLOR)[ OK ]$(RESET)"
clear:
@echo -ne "$(CLEAR)Cleanning up..."
@rm -rf *.o *.bak *~ $(TARGET)
@echo -e "$(OFFSET)$(COLOR)[ OK ]$(RESET)"
|