/
似乎不可能,但也许
bar/.
会帮助你吗?它将需要重写所有目录目标,以包括尾随的
/.
_empty :=
_space := $(_empty) $(_empty)
.PHONY: bar bar/.
bar bar/.:
@echo "$@ -> $(dir $@)"
foo: bar/
foo_quoted: "bar/ "
foo_space: bar/$(_space)
foo_space_quoted: "bar/$(_space)"
BAR = "bar/ "
foo_var: $(BAR)
BAR_DIR = bar/
foo_dir: $(dir $(BAR_DIR))
BAR_SPACE = bar/$(_space)
foo_var_space: $(BAR_SPACE)
foo_dot: bar/.
foo_double: bar//
bar
,也就是说,GNU会将尾随剥离
foo_dot
另一方面,示例的结果是
$ ./make --version
GNU Make 3.81
...
$ ./make foo_dot
bar/. -> bar/
$ make --version
GNU Make 4.2.1
...
$ make foo_dot
bar/. -> bar/