作者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/cn.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