Linux的通用makefile模板

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)

 

 

转载网址:http://blog.csdn.net/wubin1124/article/details/4334612

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个常见的Linux C Makefile模板: ```makefile # 定义编译器和编译选项 CC = gcc CFLAGS = -Wall -Wextra # 定义目标文件和依赖文件 TARGET = app SRCS = main.c function1.c function2.c OBJS = $(SRCS:.c=.o) DEPS = $(SRCS:.c=.d) # 默认目标 all: $(TARGET) # 生成可执行文件 $(TARGET): $(OBJS) $(CC) $(CFLAGS) $^ -o $@ # 生成目标文件 %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ # 生成依赖文件 %.d: %.c $(CC) $(CFLAGS) -MM $< > $@ # 包含依赖文件 -include $(DEPS) # 清除可执行文件和目标文件 clean: rm -f $(TARGET) $(OBJS) $(DEPS) .PHONY: clean ``` 这个Makefile模板中包含了几个常见的部分: 1. 定义了编译器和编译选项,可以根据需要进行修改。 2. 定义了目标文件和依赖文件,其中目标文件即可执行文件,依赖文件用于处理文件之间的依赖关系。 3. 默认目标是生成可执行文件,依赖于目标文件和依赖文件。 4. 生成可执行文件的规则中,使用了变量和自动化变量,使得Makefile更加灵活和易于维护。 5. 添加了生成依赖文件的规则,利用gcc的-MM选项可以自动生成依赖关系。 6. 使用了"-include"指令来包含依赖文件,以确保Makefile在第一次构建时也能正确处理依赖关系。 通过这个Makefile模板,你可以在Linux环境下快速构建和编译C项目。你只需要将源文件(main.c, function1.c, function2.c等)添加到SRCS变量中,然后运行"make"命令即可生成可执行文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值