Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1645048
  • 博文数量: 245
  • 博客积分: 10378
  • 博客等级: 上将
  • 技术积分: 2571
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 08:19
文章分类

全部博文(245)

文章存档

2013年(4)

2012年(8)

2011年(13)

2010年(68)

2009年(152)

分类: LINUX

2009-05-08 12:03:35

 
写程序,文件多的时候实用gcc就不方便了,就需要Makefile了,但自己对与Makefile复杂的依赖关系、规则非常的厌恶,世界是高速发展的,不要把时间浪费在无聊是事情上,收集一些Makefile的模版,以后的小规模程序就可以套用了。下边的Makefile是李建(www.mculee.cn)给的,非常的好用。
 

#   现有一个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)"

 
该工作耗时: 1.5小时。主要在查找资料上花费太多时间。
阅读(1606) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~