Makefile and standard includes

Mornin' All

I'm sure this is dead easy but I can't figure it out. I use MarkDown to convert content text to html but MarkDown does not provide the appropriate "<html><head>...</head><body>" and "</body></html>" tags. A perfect automation job for make, thinks I.

Here's the make file I have at the moment. It works fine to build the final html file in general. The problem is that it doesn't trigger a rebuild when I change html_header.inc or html_footer.inc.

Any clues?

MYINC=$(HOME)\etc
VPATH=.:$(MYINC)

%.html : %.inc
   cat "$(MYINC)/html_header.inc" >> $@
   cat $<                         >> $@
   cat "$(MYINC)/html_footer.inc" >> $@

%.inc : %.txt
   /usr/local/bin/markdown.pl $< > $@

Thanks in advance.
chris_sleeAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

ravenplCommented:
- %.html : %.inc
+ %.html : %.inc $(MYINC)/html_header.inc $(MYINC)/html_footer.inc
will not work?
0
chris_sleeAuthor Commented:
I figured that for the solution as well but, no, it doesn't work. make throws up this error:

"mixed implicit and static pattern rules. Stop.'"

My understanding is that implicit rules (whether built-in or user defined) must be of the format "%.html : %.inc" with no other dependencies listed. This is despite http://gnu.huihoo.org/make-3.77/html_chapter/make_10.html which says:

"%.o: %.c foo.h
        $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

which tells how to make `.o' files from `.c' files, and makes all `.o' files using this pattern rule also depend on `foo.h'. "
0
Duncan RoeSoftware DeveloperCommented:
What are your targets? Can you please post the entire Makefile (if very long, post as file e.g. Makefile.txt)
The problem with that line may be that the same file can match both kinds of patterns.
I tried guessing a target but can't reproduce the error you see

0
10 Tips to Protect Your Business from Ransomware

Did you know that ransomware is the most widespread, destructive malware in the world today? It accounts for 39% of all security breaches, with ransomware gangsters projected to make $11.5B in profits from online extortion by 2019.

chris_sleeAuthor Commented:
That is the entire makefile. That what puzzles me. I call it as

% make filename.html

and expect that it looks for filename.txt, checks whether it's newer then filename.html (if it exists) and builds as required.
Makefile.txt
0
ravenplCommented:
> "mixed implicit and static pattern rules. Stop.'"
what OS and make You use - it works perfectly at my side, try also (dependencies should summarize)

*.html : $(MYINC)/html_header.inc $(MYINC)/html_footer.inc
%.html : %.inc
...
0
Duncan RoeSoftware DeveloperCommented:
Why do you have a backslash on line 1? $(HOME)\etc is not the same as =$(HOME)/etc which is a normal Unix pathname
20:09:29$ cat -A ee50.mf 
MYINC=$(HOME)$
VPATH=.:$(MYINC)$
$
all: ee50.html$
$
%.html : %.inc $(MYINC)/html_header.inc $(MYINC)/html_footer.inc$
^Icat "$(MYINC)/html_header.inc" >> $@$
^Icat $<                         >> $@$
^Icat "$(MYINC)/html_footer.inc" >> $@$
$
%.inc : %.txt$
^I/usr/local/bin/markdown.pl $< > $@$
20:08:49$ make -f ee50.mf xxx.html
make: *** No rule to make target `xxx.html'.  Stop.

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
chris_sleeAuthor Commented:
Holy cow! I've been looking at this for a week and have only seen this after it was pointed out. That's what you get for working in a mixed linux/Windows environment. Thank you very much. Works perfectly now.
0
ravenplCommented:
So that's it? Correcting the typo fixed Your problem?
0
chris_sleeAuthor Commented:
You can't imagine what an idiot I feel or how much time I've sunk into this but, yes, correcting the typo fixed it. I've been in this game a long time and to be stumped by something this dumb is ... is .... well, I find it hard to believe. I really don't know how to apologise for wasting your time on something I should have been able to see at first glance.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Programming

From novice to tech pro — start learning today.