1、递归make
make命令有递归调用的功能,它可以递归调用子目录中的Makefile。例如在当前目录下有一个Makefile,在当前目录下有一个子目录hello并且其中有一个Makefile。当前目录下有一个文件man.c如下:
void main()
{
hello();
}
当前目录下的Makefile文件内容如下
CC = gcc
CFLAGS = -O2
TARGET = hello
export OBJSDIR = ${pwd}/objs #生成当前目录objs的路径,并能供外部调用
$(TARGET) : $(OBJSDIROBJSDIR)
$(MAKE) -C hello
$(CC) -w -o $(TARGET) $(OBJSDIR)/*.o
main.o:%.o:%.c
$(CC) -w -c $< -o $(OBJSDIR)/$@ $(CFLAGS) -Ihello
$(OBJSDIR):
mkdir $(OBJSDIR)
clean:
- rm -r $(OBJSDIR) #如果rm前面没有-,当执行一次make clean后再次执行make clean会出错
rm -f $(TARGET)
rm -f *~
文件夹hello下有hello.h、hello.c与Makefil