Il giorno mar 9 mag 2017 alle 14:29, Paul Smith <psm...@gnu.org> ha
scritto:
On Tue, 2017-05-09 at 14:06 +0200, Federico Bruni wrote:
### Makefile ###
all: doc
dependencies = $(shell find docs -type f)
doc: $(dependencies)
echo "Something has changed in the docs/ directory!"
### end ###
It looks up the files in the docs/ directory and executes the doc
target if any file is changed.
As written here, that's not what it does.
If I run 'make doc', it behaves as expected.
If I run 'make', the target is executed every time, even if no file
changed in docs/.
I can't explain the difference in behavior. In fact, the behavior of
"make" (target is executed every time) is what I expect to happen no
matter how you invoke make.
Why? Because make decides whether or not to rebuild something by
comparing _file timestamps_.
In this makefile you'll compare the timestamps of all the files under
the "docs" directory to... what?
Ok, that's the point, of course.
In my real project I was confused because I happened to name the
default target like the directory built by another target (not run by
'make') and by other stuff specific of my project that I won't explain
here.
_______________________________________________
Help-make mailing list
Help-make@gnu.org
https://lists.gnu.org/mailman/listinfo/help-make