From: Yongwei W. <wuy...@gm...> - 2007-09-28 01:44:09
|
Hi Keith, David, Charles, Thanks for all the responses. I really appreciate them. I may live with the current status, but I feel puzzled by some of Charles' comments. On 28/09/2007, Charles Wilson <cwi...@us...> wrote: [snipped] > > I fear there is no logical way around it. Declaring the target `PHONY' > > doesn't magically imbue it with any special property which distinguishes > > it in any way from other targets, in terms of their relationship to the > > file system; all it does is tell make that the target must always be > > remade, even if the designated file system entity already exists, and > > appears to be up to date. > > Well, except that because make knows that the target is PHONY, the only > use it has for a pre-existing file that might match its target name is > to check its timestamp to see if the PHONY target's (non-PHONY?) > dependencies themselves need to be remade. > > So, if you had > .PHONY: DEBUG > > DEBUG: foo > a-command > > and the filesystem contained 'dEbUg' with a timestamp newer than foo -- > well, target foo will get remade even if it is "newer" than the > non-existant DEBUG target, before 'a-command' is executed. I do not understand this. On phony targets from the make info page: "When it is time to consider such a target, `make' will run its commands unconditionally, regardless of whether a file with that name exists or what its last modification time is." I can't get your points, and I can't see why foo will be remade in any case. > So, on a case-insensitive file system, even PHONY targets are impacted > by the underlying file system. So I have not seen this point proved yet. Best regards, Yongwei -- Wu Yongwei URL: http://wyw.dcweb.cn/ |