Linux的通用makefile模板

# 下面的变量可以在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的通用makefile模板

相关文章:

你感兴趣的文章:

标签云: