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

Reply via email to