Makefile生成多个目标文件

有目录结构如下:

 mmap
├── Makefile
├── read
│   ├── Makefile
│   └── mmap_read.c
└── write
    ├── Makefile
    └── mmap_write.c


mmap 目录下面有 write 和 read 两个目录,mmap 目录下有一个 Makefile,两个子目录下各有一个 Makefile。


mmap 目录下 Makefile 内容如下:(下面的 \$$ 应当为 两个 $)

DIRS = write read

all: subdirs

.PHONY: subdirs clean

subdirs: $(DIRS)
	@for dir in $(DIRS); do [ ! -d \$$dir ] || make -C \$$dir || exit 1; done

clean:
	@echo $(DIRS)
	@for dir in $(DIRS); do [ ! -d \$$dir ] || make -C \$$dir clean || exit 1; done

mmap/write 目录下 Makefile 内容如下:

CC = gcc
LINK = gcc
CFLAGS = -g -pipe -Wall -Werror -Wextra -Wshadow
LIBS = 

SOURCES = $(wildcard *.c)
OBJECTS = $(patsubst %.c, %.o, $(SOURCES))
TARGET = mmap_write

first: all

%.o: %.c
	$(CC) -c $(CFLAGS) -o $@ $<

all: $(TARGET)

$(TARGET): $(OBJECTS)
	$(LINK) $(CFLAGS) $(LIBS) -o ../$(TARGET) $(OBJECTS)

.PHONY: clean

clean:
	rm -f $(OBJECTS) $(TARGET)

mmap/read 目录下 Makefile 内容如下:

CC = gcc
LINK = gcc
CFLAGS = -g -pipe -Wall -Werror -Wextra -Wshadow
LIBS = 

SOURCES = $(wildcard *.c)
OBJECTS = $(patsubst %.c, %.o, $(SOURCES))
TARGET = mmap_read

first: all

%.o: %.c
	$(CC) -c $(CFLAGS) -o $@ $<

all: $(TARGET)

$(TARGET): $(OBJECTS)
	$(LINK) $(CFLAGS) $(LIBS) -o ../$(TARGET) $(OBJECTS)

.PHONY: clean

clean:
	rm -f $(OBJECTS) $(TARGET)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值