作者phterry (小风)
看板LinuxDev
标题Re: [问题] 请问怎麽makefile里去让别的目录make?
时间Mon Oct 27 20:55:34 2008
※ 引述《awaysu (阿伟苏)》之铭言:
: 请教各位~
: 小弟初学有问题想请教~
: 我有A目录,A目录里有B和C目录,
: 然後B和C目录里的makefile是写好的,
: 我要在A目录也写一个makefile
: 要怎麽写可以执行到B和C目录的makefile?
: 感谢!
Makefile例: (最前端数字为行数)
1 SUBDIR = B C
2
3 .PHONY: alldir $(SUBDIR)
4
5 alldir: $(SUBDIR)
6 $(SUBDIR):
7 $(MAKE) -C $@
8
9 B: C
这个 Makefile 会依照 SUBDIR 变数里所包含的资料夹名称, 一一进去执行
make, 需要注意的是第 9 行的叙述, 这是一个处理相依性的例子, "B: C"
的意思是, 编译 B 之前, 要先编译 C.
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.199.67
1F:推 uefang:.PHONY是什麽意思? 12/06 10:40
Makefile里的各个 target 都是以档案为基础, 如果该档案已经存在, 而又没有
较新的相依条件(prerequisites)的话, 该 target 就不会再次执行. 上例中,
你会发现 target 都是 directory, 在 make 执行时, 这些 directory 已经存在,
又因为没有相依条件, 因此不会被编译. 要解决这种情形, 把这些 target 宣告
成 phony target 是一个好方法, make 会把 phony target 视为虚拟的 target
而不去以 target 为档名(或directory名)去判别 target 是否已被编译过, 因此
每次打 make 时, 即使有和 target 同名的档案或 directory 存在, 这些 phony
target 都会被执行.
以 make clean 为例, 如果你的 Makefile 里没有 .PHONY: clean , 你可以试着
放一个叫 clean 的档案进去, 你会发现, 每次打 make clean 时, 都不会做你指
定的 clean 的动作.
总而言之, .PHONY 的用途, 就是解决 Target 及档名相同时所带来的冲突.
※ 编辑: phterry 来自: 122.117.199.67 (12/06 14:06)
2F:推 uefang:谢谢... 解释很清楚.... 感谢您的分享 ^^ 12/06 15:23