我需要指出我缺少的关于制作文件的东西。对于给定的makefile:
VPATH=
targ1: VPATH=src
targ1: targ2
targ2: targ2
echo $(VPATH)和空的src direcotry,每次调用“maketarg1”时,我都会如愿以偿:
echo src
src由于makefile目录和src目录中没有文件targ2,所以需要更新targ2。
但问题是,即使我在src目录中创建targ2文件,每次调用“make 1”时,都会更新targ2。在这种情况下,VPATH没有按预期工作。
make变量VPATH的值指定了应该搜索的目录列表。大多数情况下,期望目录包含不在当前目录中的先决条件文件;但是,请将VPATH用作规则的先决条件和目标的搜索列表。
但是,当我在全局范围内设置VPATH时,不存在这样的问题:
VPATH=src
targ1: VPATH=src
targ1: targ2
targ2: targ2
echo $(VPATH)结果是:‘targ1 1’没有什么可做的。
为何会有这样的分别呢?
发布于 2018-03-27 23:20:46
与自动变量一样,目标特定值仅在目标配方的上下文中可用.
因此,在您的第一个示例中,您提供给VPATH的值无法用于查找先决条件targ2。
https://stackoverflow.com/questions/49521378
复制相似问题