Re: [問題] 請問 Makefile 精簡輸出...

看板LinuxDev作者 (Ya-Shiuan)時間18年前 (2006/12/26 12:49), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《KENyroj (難得一身雞蛋糕...)》之銘言: : ※ [本文轉錄自 C_and_CPP 看板] : 作者: KENyroj (難得一身雞蛋糕...) 看板: C_and_CPP : 標題: [問題] 請問 Makefile 精簡輸出... : 時間: Tue Dec 26 16:52:27 2006 : 不好意思... 標題下得有點言不及意... : 請問一下在 linux 下寫程式的大大們... : 有沒有辦法在下 make 指令時... 不要讓它冒出那麼多訊息... : 它會把所有的 -L -I 展開... 輸出到畫面上看起來還蠻累的... : 有沒有辦法讓它只秀出... 比如說 target name(XXX.o) 呢?? : 謝謝大家 : __yroj 其實 make 的功能非常強大,如果只是單純要跑 slient 模式 可以在 make 時加入 -s 參數即可 但如果要達到您的需求,顯示特定 target (如 build kernel 一般) 可以花一些時間研究 kernel 的 KBuild 的作法,但畢竟這是牛刀 如果只是要殺雞,最簡單方式可以用下面這種方式 CC = gcc OBJS = sss.o sss_socks.o sss_data.o sss_rule.o errexit.o \ passivesock.o connectsock.o vstream.o CFLAGS += -Wunused -g -O2 PACKET = sss .PHONY: all clean all: $(PACKET) $(PACKET): $(OBJS) @echo " LINK $@";$(CC) $(CFLAGS) $^ -o $@ %.o: %.c @echo " GCC $@";$(CC) $(CFLAGS) $(CPPFLAGS) -c $< clean: @rm -rf *.o $(PACKET) 在 makefile 裡面,每一個以 tab 開頭的行都是 fork 一個 shell 去執行,而前面的 @ 符號,就是告訴 make 不要將 shell 要執行的指令印出來,所以我在上面 command 部分使用 @ 使 make 不顯示指令,並以 echo 方式將現在要做的事情印出來,簡化訊息 by the way, 在 KBuild 是利用 V 這個 variable 來控制顯示的狀態,可以是 verbose mode 或是加 -s 成為 slient mode, 或是預設的 brief mode 詳細 Make 的用法可以參考 O'Reilly 的 GNU Make 3rd http://www.oreilly.com.tw/product_unix.php?id=a164 3rd 和 2st 因為作者換人寫,內容也幾乎完全不一樣,以實務角度來看,我比較推薦 3rd, 當然很多人持相反意見,參考看看囉... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.188.188

12/26 22:31, , 1F
感謝這位大大的指導 <(_ _)>
12/26 22:31, 1F

12/26 23:14, , 2F
客氣了,大家彼此相互切磋..
12/26 23:14, 2F

12/26 23:17, , 3F
改一下 .c.o 的寫法變成 %.o: %.c GNU 的標準用法
12/26 23:17, 3F
※ 編輯: andytzeng 來自: 220.135.188.188 (12/27 02:09)
文章代碼(AID): #15aHfOoD (LinuxDev)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #15aHfOoD (LinuxDev)