Mail Archives: cygwin/1999/02/15/10:00:11
Came across the following problem in B20 which I believe should work. With
a makefile of:
need1 := g:/a g:/b g:/c g:/d g:/e g:/f
all1 : $(need1)
$(need1) : % :
@echo $@
need2 := //g/a //g/b //g/c //g/d //g/e //g/f
all2 : $(need2)
$(need2) : % :
@echo $@
When I run "make all1" I get.
g:/a
g:/b
g:/c
g:/d
g:/e
g:/f
When I run "make all2" I get.
make: *** No rule to make target `//g/a', needed by `all2'. Stop.
If you use -p option to look at what is going on you will find that make
seems to be incorrectly concatenating adjacent targets together when "//g"
is used instead of "g:".
all2: //g/a //g/b //g/c //g/d //g/e //g/f
# Command-line target.
# Implicit rule search has been done.
# File does not exist.
# File has not been updated.
//g/a //g/b:
# Implicit rule search has not been done.
# Implicit/static pattern stem: `//g/a //g/b'
# Modification time never checked.
# File has not been updated.
# commands to execute (from `foo.mk', line 13):
@echo $@
Since the rule which is set up seems to have a target of "//g/a //g/b",
there is no separate targets for either "//g/a" or "//g/b" and thus make
doesn't know how to build them, or something like that.
--
Graham Dumpleton (grahamd AT nms DOT otc DOT com DOT au)
- Raw text -