n 基本框架:
a) Make常用内嵌函数
b) 多级目录Makefile的编写
4.1Make常用内嵌函数
函数调用的一般形式:$(function arguments(参数))
1) $(wildcard PATTERN) : 匹配当前目录下指定模式的文件
例子:src=$(wildcard *.c)
2) 模式替换函数
例子:$(src:.c=.o)
3) Shell函数: 执行shell命令
例子:$(shell ls –d */)
4.2多级目录Makefile的编写
4.2.1多级目录,只生成一个可执行文件的Makefile的编写
一个比较好的例子(值得参考):
.PHONY: all clean
CC = gcc
CFLAGS = -Wall –g
BIN = main
SUBDIRS = $(shell ls –d */)
SUBSRC = $(shell find $(SUBDIRS) -name ‘*.c’)
SUBOBJ = $(SUBSRC: .c=.o)
ROOTSRC = $(wildcard *.c)
ROOTOBJ = $(ROOTSRC:.c=.o)
OBJS = $(ROOTOBJ) $(SUBOBJ)
all:$(BIN)
$(BIN):$(OBJS)
$(CC) $(CFLAGS) $^ -o $@
%.o:%.c
$(CC) $(CFLAGS) –c $< -o $@
clean:
rm –f $(BIN) $(OBJS)
4.2.2 多级目录,生成多个可执行文件的Makefile的编写:
$(CURDIR) :表示当前文件夹。
难度较大,先简单了解下。
4.3Makefile编写总结:
1)一个目录下,一个可执行文件的编写;
2)一个目录下,多个可执行文件的编写;
3)多级目录下,一个可执行文件的编写;
4)多级目录下,多个可执行文件的编写。
前三种Makefile文件的编写自己应该掌握。
原文:http://www.cnblogs.com/xieyang/p/3919565.html