# 下面的变量可以在shell 的环境变量里面指定。
# 也可以象下面这样在 Makefile 里面指定。
# CC=gcc # 编译器
# CFLAGS=-Wall -Werror -g # 编译器参数
# LD=gcc # 连接器参数
# LDFLAGS= $(LIBS) -lpthread # 连接器参数
# DEPENDFLAG=-MM # 生成依赖关系文件的参数
# INCLUDES=-Idir1 -Idir2 # 指明包含外部头文件的目录
# LIBS=-la -lb -lc # 指明引用外部的库文件CFLAGS:=$(CFLAGS) $(INCLUDES)
LDFLAGS:=$(LDFLAGS) $(LIBS)
#指明项目中,包含源程序的所有的子目录。
SRCDIRS=.
#指明最终生成的可执行文件的名称
PROGRAMS=test.exe
#下面的部分一般不用改动
#从所有子目录中得到源代码的列表
SRCS=$(foreach dir,$(SRCDIRS),$(wildcard $(dir)/*.c))
#得到源代码对应的目标文件的列表
OBJS=$(SRCS:.c=.o)#得到源代码对应的依赖关系文件的列表
#依赖关系文件就是一个目标文件依赖于
#哪些头文件和源程序,依赖关系是自动
#生成的,并且用include语句包含在Makefile中
DEPENDS=$(SRCS:.c=.d)
#指明默认目标是生成最终可执行文件。
all: $(PROGRAM)
#生成依赖关系文件
%.d:%.c
$(CC) $(DEPENDFLAG) $(CFLAGS) $< |
sed "s?\(.*\):?$(basename $<).o $(basename $<).d :?g"
> $@ || $(RM) $@$(PROGRAMS): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(filter %.o ,$+)
# 包含入依赖关系文件
include $(DEPENDS)
# 删除生成的中间文件
clean:
rm $(OBJS) $(DEPENDS) $(PROGRAMS)Linux下tcpdump使用Linux 互斥锁的实现相关资讯 Linux教程
- Linux教程:如何在命令行中查看目 (07/28/2014 12:22:23)
- Linux 修改root密码 (11/03/2012 07:53:38)
- su - root 与su root的区别 (06/06/2012 00:39:40)
| - Linux进程间通信:消息队列 (01/28/2013 09:43:00)
- U盘安装Linux开机无法启动解决方法 (10/07/2012 08:55:52)
- Windows 7/Linux 同步时间 (05/15/2012 06:17:55)
|
本文评论 查看全部评论 (0)