一个适合小型项目的通用Makefile模板

使用规则:
目录结构图如下所示。
项目目录结构图

phone:为项目名 Make后最后的可执行文件也为phone
src : 该目录下存放所有的.c文件
inc : 该目录下存放所有的.h文件

#Copyright (c) 2017 xiethon@126.com
#
# *DOCUMENTATION*
# 一个通用的Makefile模板


# $(notdir $(CURDIR)) 获取目录名
TARGET = $(notdir $(CURDIR)) 

CROSS_COMPILE = gcc
COMPILE.c = $(CROSS_COMPILE)  -c
LINK.c = $(CROSS_COMPILE)
RM =rm

# $(wildcard src/*.c) :获取src/ 目录下的所有.c文件。
# $(wildcard inc/*.h) :获取inc/ 目录下的所有.h文件。
SOURCES = $(wildcard src/*.c)
HEADERS = $(wildcard inc/*.h)

# 静态模式规则。变量OBJFILES集合下的所有.c 替换成 .o文件
OBJFILES = $(SOURCES:%.c=%.o)

.PHONY:clean all install

#all:终极目标
all:$(TARGET) 
    @echo builded target:$^
    @echo 

#目标文件依赖规则
$(TARGET): $(OBJFILES) 
    @echo 
    @echo Linking $@ from $^...
    $(LINK.c) -o $@ $^ 
    @echo Link finished

#OBJFILES的依赖规则
$(OBJFILES): %.o:%.c
    @echo
    @echo Compiling $@ from $<...
    $(COMPILE.c) -o $@ $<
    @echo Compile finished

clean:
    @echo Removing generated files...
    @ -$(RM) -rf $(OBJFILES) $(TARGET) *~ *.d *.o 

执行效果如下:

linux@ubuntu:/mnt/hgfs/01_Proj/svn/phone$ make
Compiling src/contact.o from src/contact.c…
gcc -c -o src/contact.o src/contact.c
Compile finished

Compiling src/list.o from src/list.c…
gcc -c -o src/list.o src/list.c
Compile finished

Compiling src/main.o from src/main.c…
gcc -c -o src/main.o src/main.c
Compile finished

Linking phone from src/contact.o src/list.o src/main.o…
gcc -o phone src/contact.o src/list.o src/main.o
Link finished
builded target:phone

Makefile源文件和测试项目地址:https://github.com/xiethon/Makefile

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值