I have a script that, when run, generates a file. I want to create a Makefile to run the script to generate the file if the generated file does not exist or if the script changes.
Here's a simplified version. Let's say I have an executable script gen_test.sh
like this:
#!/bin/sh
echo "This is a generated file" > genfile.foo
And a Makefile like this:
#
# Test Makefile
#
GEN_SCRIPT = $(CURDIR)/gen_test.sh
GEN_FILE = $(CURDIR)/genfile.foo
$(GEN_FILE): $(GEN_SCRIPT)
$(shell $(GEN_SCRIPT))
.PHONY: clean
clean:
$(RM) $(GEN_FILE)
When I run make
, I see the following output:
make: '/workspace/sw/bhshelto/temp/makefile_test/genfile.foo' is up to date.
but genfile.foo
does in fact get generated.
What's going on here? Why do I see the "is up to date" message, and how do I get rid of it?
Thanks!