【发布时间】:2018-02-26 09:30:50
【问题描述】:
我刚刚遇到了这个 makefile,这让我很困惑:
PROJECT_ROOT = ../..
LIBDIR = $(PROJECT_ROOT)/src/lib
INCDIR = $(PROJECT_ROOT)/include
SRCS = proj_start.c function1.c
LIBS = $(LIBDIR)/libtest.a
OBJS = $(SRCS:.c=.o)
PROJECT = project1
FLAGS = -I$(INCDIR)
CC = gcc $(FLAGS)
.c.o:
$(CC) -c $<
$(PROJECT): $(OBJS)
$(CC) $(OBJS) $(LIBS) -o $@
it: $(PROJECT)
clean:
rm -f $(OBJS) $(PROJECT)
depend: $(SRCS)
$(CC) -M $(SRCS) > dependList
sed -e '1,/^# DO NOT DELETE/!d' Makefile > make.tmp
cat dependList >> make.tmp
mv make.tmp Makefile
rm dependList
# DO NOT DELETE THIS LINE
这些是让我困惑的部分:
LIBDIR = $(PROJECT_ROOT)/src/lib
为什么 LIBDIR 在 root/src/lib 库中? 不应该是 root/lib 目录吗(这两个目录都存在于文件层次结构中)?
.c.o:
$(CC) -c $<
这到底是做什么的? "$
depend: $(SRCS)
$(CC) -M $(SRCS) > dependList
sed -e '1,/^# DO NOT DELETE/!d' Makefile > make.tmp
cat dependList >> make.tmp
mv make.tmp Makefile
rm dependList
# DO NOT DELETE THIS LINE
为什么我们需要这部分?似乎所有依赖项都已处理...?
【问题讨论】:
标签: linux unix makefile directory