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)
分享到:
相关推荐
使用Makefile模板,用户只需要根据需要配置头文件路径,库文件路径,编译器、目标文件名即可一键make,生成对应编译器平台的可执行程序
通用的makefile模板,支持模块化编译,支持多平台,支持多项目配置。 简单配置,只需添加源文件列表和指定编译目标,就可以直接编译。 支持添加test。 默认包含gtest测试样例
几个好用的makefile模板,稍加改动或不加改动就可以拿来自己用作makefile文件
Makefile模板示例;两个简单的Makefile模板和一个复杂的Makefile模板
LINUX驱动Makefile模板[文].pdf
linux_ 几个常用makefile模板.pdf
创建动态库,静态库,exe文件的makefile模板,转Linux的同学可以看看,直接填充就可以了
这是我自己制作的一个通用Makefile模板,你只需要像填空一下设置一些必要的编译器参数和源代码目录即可,其他复杂的依赖关系,目录文件等都会自动帮你生成,免去你的很多烦恼。 注意:每一个.c文件都会在对应的目录...
基本通用makefile模板, 目录结构 ./src ./include ./lib。 makefile和*.c文件放在 ./src 目录, 头文件放在 ./include目录, 库文件放在 ./lib目录。不需要静态编译,取消 -static。 my_main_c 替换为你需要编译的...
Makefile模板,linux下生手,半生不熟的人的好伙伴.照葫芦画瓢的好东西.
通用Makefile模板,简单易用,自动生成依赖关系,使用时放到项目源码的顶级目录,根据提示然后填写相关信息,Makefile会自动处理依赖关系和头文件路径等内容。
一个Makefile模板
makefile模板,非常实用,简洁清晰,小型、中型项目都适用。
lwbuild轻量级构建框架(Makefile模板), 不用手写Makefile,不用手写编译构建系统,拿来直接使用!
比较好用的Makefile模板,只要更改定义部分的源文件目录和目的目录,就会自动代码所有的源文件并生成相关依赖文件。最终链接成为可执行目的文件。