作者anoymouse (沒有暱稱)
看板C_and_CPP
標題[問題] makefile phony問題
時間Tue Jan 26 09:36:45 2021
ubuntu
GCC
# Subdirectories to build
SUBDIRS = \
radio \
video \
# RULES
.PHONY : $(SUBDIRS) $(MAKEFILE_LIST)
all : $(SUBDIRS) $(MAKEFILE_LIST)
$(SUBDIRS) :
@echo "Building $@"
$(A)$(MAKE) -C $@
請教一下
all 雖然沒有宣告成phony,但這種非實際檔案的target,是不是還是可以算是phony,
前提是沒有檔案叫做all的話?
因為在看GNU make 的手冊:
"When one phony target is a prerequisite of another, it serves as a subroutine
of the other."
然後再根據多目標規則,可以等效成:
radio :
@echo "Building $@"
$(A)$(MAKE) -C $@
video :
@echo "Building $@"
$(A)$(MAKE) -C $@
請問這樣的理解正確嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.242.38.34 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1611625007.A.8A8.html
1F:→ Lipraxde: 「前提是沒有檔案叫做all的話?」,應該是沒這種前提, 01/26 13:50
2F:→ Lipraxde: 乖乖寫成 phony 01/26 13:50
3F:推 Schottky: 也不是沒看過因為意外多了一個檔案讓整個make流程爛掉 01/27 01:44
4F:→ Schottky: 而且東找西找怎麼都找不出來為什麼昨天好好的今天就故障 01/27 01:44
5F:→ Schottky: 寫好.PHONY和把一串檢查流程寫進文件粗體強調你選一個 01/27 01:45
6F:→ anoymouse: 因為ic廠sdk就這樣寫 所以來確認理解是否正確 01/27 14:43
7F:→ Schottky: IC 廠寫的程式基本上需要 debug 的地方可多了 01/27 17:16
8F:→ Schottky: Makefile 和 build script 出槌是日常 01/27 17:17
9F:→ Schottky: 我上次幫他們修了一處,他們問我想不想跳槽過去 01/27 17:17
10F:→ anoymouse: 哈哈 真的假的 太強了! 01/27 18:43
11F:→ anoymouse: 那我這理解有沒有問題? 01/27 18:57
12F:推 Schottky: 你的理解就像酒駕的駕駛說只要不肇事就沒有問題 01/27 19:19
13F:→ Schottky: 好像有道理,但是我就眼睜睜看著有人出過事,你說呢 01/27 19:20
14F:→ Schottky: .PHONY 就是因此而出現的啊 01/27 19:22
15F:→ anoymouse: 好 那多目標規則也正確吧? 01/27 19:57
16F:→ anoymouse: 謝謝 01/27 19:58
17F:推 Schottky: 邏輯上來說,all 還要包括 MAKEFILE_LIST 裡面的目標們 01/27 20:02
18F:→ Schottky: 但 radio 和 video 兩個 target 都是 .PHONY 這沒錯 01/27 20:04
19F:→ Schottky: make all = make radio + make video + make 其他沒寫的 01/27 20:05
20F:→ Schottky: 所以原則上你舉的範例是能正常運作沒錯 01/27 20:11
21F:推 Schottky: 補充一點,就算 all 這個檔案存在,video 和 radio 還是 01/27 20:14
22F:→ Schottky: 會被執行一遍 01/27 20:15
23F:→ anoymouse: 因為phony target總是會被執行是嗎 01/27 20:23
24F:推 Schottky: 沒錯 01/27 20:27
25F:→ Lipraxde: 酒駕不要肇事,譬喻的真好XDD 01/28 22:50