谢谢认真回复!
但单独执行$(abspath /abs_dir1)并不会出错,得到的依然是/abs_dir1
这不是不一致吗?
事实上我最后的解决也没有解决区分相对路径和绝对路径,而是换成了
OUT := $(foreach dir, $(IN), -I$(abspath $(dir)))
就没问题了
很难用什么设计思路去解释这种不一致性
【 在 tsa300 的大作中提到: 】
: 不是make的bug。
: 在你的Makefile里,$(abspath %)会把相对路径转为绝对路径,但对已经是绝对路径的目录,比如/abs_dir1,它也当成当前工作目录的相对路径来处理,从而得到/home/user/make_test//abs_dir1这样的输出。
: 解决方法是在处理过程中检查路径是否已经是绝对路径。已经是绝对路径就不转了 ---- 在make中检查一个路径是相对的还是绝对的很容易,看看打头的字符是不是 / 就齐了。
: ...................
--
修改:Machael FROM 124.71.93.*
FROM 124.70.231.*