|
From: | Davidson, Josh |
Subject: | Order-only Prerequisite Bug or User Error? |
Date: | Tue, 02 Dec 2008 15:17:42 -0700 |
I am experiencing a weird issue with order-only prerequisites
in GNU Make v3.8. My expectation is based on the following statement from
section 4.2 Types of Prerequisites of the GNU Make manual: “Also, you may
still declare multiple lines of prerequisites for the same target: they are
appended appropriately.” Consider this dumbed down example (as viewed from a
terminal): -------------------Begin
Example------------------------------- %> cat Makefile.mk d := temp obj_$(d) := $(d)/obj include Blah.mk d := wtf obj_$(d) := $(d)/obj include Blah.mk %> cat Blah.mk VPATH := $(VPATH) $(d) #This doesn't work $(obj_$(d))/%.o: | $(obj_$(d)) $(obj_$(d))/%.o: %.c touch
$@ #This does work #$(obj_$(d))/%.o: %.c | $(obj_$(d)) # touch
$@ $(obj_$(d)): mkdir
$@ %> mkdir temp %> mkdir wtf %> touch temp/blah.c %> gmake –f Makefile.mk temp/obj/blah.o Touch temp/obj/blah.o Cannot create temp/obj/blah.o: No such file or directory gmake: ***[temp/obj/blah.o] Error 1 -------------------End
Example------------------------------- If you’ll notice, the Blah.mk that is being included
from the main makefile has a section commented out where the order-only
prerequisite is combined with the implicit rule. That works as
expected. From my interpretation of the manual, it what is currently
uncommented and failing should also work. I should note that most of the
time this does work correctly. Not sure is it has to do with simply
expanded variables or what the deal is. Josh |
[Prev in Thread] | Current Thread | [Next in Thread] |