亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2113 | 回復: 5
打印 上一主題 下一主題

Makefile疑問 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-02-27 13:11 |只看該作者 |倒序瀏覽
下面是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

論壇徽章:
0
2 [報告]
發(fā)表于 2009-02-27 13:22 |只看該作者
大概是表示將 輸出重定向到.depend吧

論壇徽章:
0
3 [報告]
發(fā)表于 2009-02-27 23:35 |只看該作者

對Makefile知道的也不多,剛才又查了一下,我是這么理解的:

生成的.depend中包含.o的依賴關系,再用include把這些依賴關系包含進來,這樣就形成了最一般的makefile格式:
foo.o: foo.c foo.h

foo:foo.o
        rules
...
也就是說“
dep depend::
        $(CC) -MM $(CFLAGS) $(SRCS_COMMON) $(SRCS_MPLAYER) $(SRCS_MENCODER) 1>.depend
”,這兩句避免了在Makefile中寫依賴關系這個事情。
為什么一定要生成依賴關系呢?因為Make只能自動推導出"foo.o:foo.c"這種依賴關系。依賴關系可能不全,造成編譯失敗。
具體可以參考"跟我一起寫Makefile",里面說的很清楚。這篇文章網(wǎng)上很容易找到,我就不貼鏈接了。

論壇徽章:
0
4 [報告]
發(fā)表于 2009-03-01 10:09 |只看該作者
dep depend::
        $(CC) -MM $(CFLAGS) $(SRCS_COMMON) $(SRCS_MPLAYER) $(SRCS_MENCODER) 1>.depend

論壇徽章:
0
5 [報告]
發(fā)表于 2009-03-01 20:15 |只看該作者
1 表示標準輸出,$(CC) -MM $(CFLAGS) $(SRCS_COMMON) $(SRCS_MPLAYER) $(SRCS_MENCODER)默認將結果輸出到標準輸出,即終端,加上1>.depend之后則把該語句執(zhí)行結果重定向到.depend文件了。
順便說一下,0 表示標準輸入(一般是鍵盤) 2 表示標準錯誤。

論壇徽章:
0
6 [報告]
發(fā)表于 2009-03-02 12:32 |只看該作者
明白了,謝謝指教
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP