Makefile,

来源:互联网 发布:english in mind软件 编辑:程序博客网 时间:2024/04/27 17:42

当我们写一些大项目,有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 = cacuDIR = sub addDIRS = $(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 = testDIR = sub addOBJSDIR=.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


0 0