- 论坛徽章:
- 0
|
下面是MPlayer项目的common.mak部分代码
SRCS_COMMON += $(SRCS_COMMON-yes)
SRCS_MPLAYER += $(SRCS_MPLAYER-yes)
SRCS_MENCODER += $(SRCS_MENCODER-yes)
以上-yes是什么意思?
dep depend::
$(CC) -MM $(CFLAGS) $(SRCS_COMMON) $(SRCS_MPLAYER) $(SRCS_MENCODER) 1>.depend
这条命令里后面的 1>.depend是什么意思?
我的理解是编译后生成依赖关系文件.depend,编译完了还要依赖关系文件做什么?迷惑。。。
以下是完整代码,部分中文是我加入的注释:
SRCS_COMMON += $(SRCS_COMMON-yes)
SRCS_MPLAYER += $(SRCS_MPLAYER-yes)
SRCS_MENCODER += $(SRCS_MENCODER-yes)
# $(basename $(SRCS_COMMON)) 函数:取SRCS_COMMON文件列表中各文件名的前缀
# $(addsuffiix .o, $(basename $(SRCS_COMMON))) 函数: 给文件名加.o后缀
OBJS_COMMON += $(addsuffix .o, $(basename $(SRCS_COMMON)) )
OBJS_MPLAYER += $(addsuffix .o, $(basename $(SRCS_MPLAYER)) )
OBJS_MENCODER += $(addsuffix .o, $(basename $(SRCS_MENCODER)) )
CFLAGS-$(LIBAVCODEC) += -I../libavcodec
CFLAGS-$(LIBAVFORMAT) += -I../libavformat
CFLAGS += $(CFLAGS-yes) $(OPTFLAGS)
LIBS-$(MPLAYER) += $(LIBNAME_MPLAYER)
LIBS-$(MENCODER) += $(LIBNAME_MENCODER)
LIBS = $(LIBNAME_COMMON) $(LIBS-yes)
# .a为终极目标
libs: $(LIBS)
# .a: %.o
$(LIBNAME_COMMON): $(OBJS_COMMON)
$(LIBNAME_MPLAYER): $(OBJS_MPLAYER)
$(LIBNAME_MENCODER): $(OBJS_MENCODER)
$(LIBNAME_COMMON) $(LIBNAME_MPLAYER) $(LIBNAME_MENCODER):
$(AR) r $@ $^
$(RANLIB) $@
clean::
rm -f *.o *.a *~
distclean:: clean
rm -f .depend test test2
# gcc参数:
# -M 找出.c文件中的所有依赖文件,包括标准库头文件
# -MM 找出的头文件不包含标准库头文件
dep depend::
$(CC) -MM $(CFLAGS) $(SRCS_COMMON) $(SRCS_MPLAYER) $(SRCS_MENCODER) 1>.depend
# -include -用来忽略此操作的错误,继续执行
# .depend文件是自动产生的信赖关系文件
-include .depend
.PHONY: libs clean distclean dep depend |
|