Makefile,

当我们写一些大项目,有dh_make,debian包管理等手段,去自动编译打包。 但是当我们自己写一些小项目或者测试demo时,动手写Makefile,虽然不难却也繁琐。下面我提供一个通用Makefile。

1.编写通用实例:


├── add
│   ├── add_float.c
│   ├── add.h
│   └── add_int.c
├── main.c
├── Makefile
└── sub
    ├── sub_float.c
    ├── sub.h
    └── sub_int.c

Makefile:

内置:CC=cc,RM=rm -f


下面两例,只需输入工程下的文件夹名称和可执行文件名即可。

注意:直接copy格式可能变动,开头空白是TAB而不是空格。

常规Makefile:

TARGET = cacu
DIR = sub add

DIRS = $(DIR) .
CFLAGS = -O2 $(patsubst %, -I%, $(DIR))
FILES = $(foreach dir, $(DIRS), $(wildcard $(dir)/*.c))
OBJS = $(patsubst %.c,%.o,$(FILES))
$(TARGET):$(OBJS)
    $(CC) -o $(TARGET) $(OBJS)

clean:
    -$(RM) $(TARGET) $(OBJS) #‘-’表示失败时不报错继续执行。
DIY去.o文件Makefile:

TARGET = test
DIR = sub add

OBJSDIR=.objs
#VPATH=add:sub:.
DIRS = $(DIR) .
CFLAGS = -O2 $(patsubst %, -I%, $(DIR))
FILES = $(foreach dir, $(DIRS), $(wildcard $(dir)/*.c))
OBJS = $(patsubst %.c,%.o,$(FILES))

$(TARGET): $(OBJSDIR) $(OBJS) 
	$(CC) -o $(TARGET) $(patsubst %, $(OBJSDIR)/%/*.o, $(DIR)) $(OBJSDIR)/*.o 	$(CFLAGS)
$(OBJS):%.o:%.c
	$(CC) -c $(CFLAGS) $< -o $(OBJSDIR)/$@ 
$(OBJSDIR):
	mkdir -p  $(patsubst %, ./$(OBJSDIR)/%, $(DIR))

clean:
	-$(RM) -r $(TARGET) $(OBJS) $(OBJSDIR)


see also:http://www.gnu.org/software/make/manual/make.html

http://www.cnblogs.com/DanielZheng/archive/2011/08/09/2132424.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值