Travis Vitek wrote: [...]
So now we are pretty sure we know what is happening. All target names that end in .out will match to the pattern rule for generating .out files first. The question is how to fix it. Here are the options I see.
Thanks for the analysis!
1. rename the source file so the generated executable will not end in .out 2. change the .out rule to generate output files with some other extension 3. create an rule that is a better match than %.out so that rule is selected for 22.locale.codecvt.out 4. create a new makefile that includes the original GNUmakefile.tst, but defines the more explicit rule mentioned in 3 I dislike option 3 the most,
Between 2 and 3 I think I actually like 3 better. It seems general enough to eliminate all ill-effects of the overly generic %.out: % rule. And it's very simple (at least in my tests it was): %.foo: %.foo.c touch $@
and from the sound of it you won't want to use option 1. So how does option 2 sound?
Another possibility might be to enable the %.out: % rule only for examples and disable it for tests and everything else work? We don't need to create .out files anywhere else, do we? Martin