On Wed, 2016-03-02 at 07:20 +0900, Shigio YAMAGUCHI wrote: > This program built for i386-apple-darwin11.3.0 > $ ls > Makefile > $ cat Makefile > %: %.m4 > m4 $^ > $@ > $ touch test.html.m4 > $ make test.html > m4 test.html.m4 > test.html > $ touch test.c.m4 > $ make test.c > make: *** No rule to make target `test.c'. Stop. > > Why does the build of test.c fail?
This is because you're using a "match-anything" rule and GNU make has special operations for "match-anything" rules. See: http://www.gnu.org/software/make/manual/html_node/Match_002dAnything-Rules.html In particular the last 5 or so paragraphs. > Is there a way to make it succeed? Well, if you don't need to create the .m4 file from another file you can change your pattern rule to be terminal like this: %:: %.m4 m4 $^ > $@ Alternatively you can run make with the -r flag to get rid of all built -in rules, including the "special built-in dummy patterns". _______________________________________________ Help-make mailing list Help-make@gnu.org https://lists.gnu.org/mailman/listinfo/help-make