makefile - Make and last modification times of directories on Linux -
consider following makefile:
foo : mkdir foo foo/a.out : foo a.in cp a.in foo/a.out foo/b.out : foo b.in cp b.in foo/b.out and following interaction it, starting directory contains files a.in , b.in , nothing else:
$ make foo/a.out mkdir foo cp a.in foo/a.out so far, good.
$ make foo/b.out cp b.in foo/b.out still good, now:
$ make foo/a.out # a.out should date now! cp a.in foo/a.out it rebuilds a.out target, though none of prerequisites have changed.
it seems what's happening when foo/b.out created, last modification time of directory foo updated, picks having "changed".
is there way avoid this? example, there way declare foo/a.out depends on foo in foo has exist, , creating of files inside foo doesn't cause foo considered out of date?
as authority on make pointed out:
"the 1 thing must never use directory simple prerequisite. rules filesystem uses update modified time on directories not work make."
but think want:
foo : mkdir foo foo/a.out : a.in | foo cp a.in foo/a.out foo/b.out : b.in | foo cp b.in foo/b.out
Comments
Post a Comment