- 論壇徽章:
- 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)) 函數(shù):取SRCS_COMMON文件列表中各文件名的前綴
# $(addsuffiix .o, $(basename $(SRCS_COMMON))) 函數(shù): 給文件名加.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參數(shù):
# -M 找出.c文件中的所有依賴文件,包括標準庫頭文件
# -MM 找出的頭文件不包含標準庫頭文件
dep depend::
$(CC) -MM $(CFLAGS) $(SRCS_COMMON) $(SRCS_MPLAYER) $(SRCS_MENCODER) 1>.depend
# -include -用來忽略此操作的錯誤,繼續(xù)執(zhí)行
# .depend文件是自動產(chǎn)生的信賴關系文件
-include .depend
.PHONY: libs clean distclean dep depend |
|