help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Brittle -includes


From: Paul Smith
Subject: Re: Brittle -includes
Date: Mon, 21 Oct 2019 01:29:10 -0400
User-agent: Evolution 3.32.1-2

On Mon, 2019-10-21 at 05:55 +0200, David Deutsch wrote:
> On the top of my make wishlist would be to have it give me a little more
> detail than "No rule to make X". In many cases, what it really means is
> "No rule to make Y which I'd need to make X which is what I'm currently
> trying to make". I might know what the issue with trying to make Y is,
> but baffled over how it is stuck on making X. So I guess something like
> a short trace on the current set of dependencies make is trying to resolve.

I can only assume that the rules in question are pattern rules.  If
they were explicit rules then make would indeed give you a more clear
declaration of which file is missing.

However, with pattern rules this is not possible, because there can be
many pattern rules that might match the same target.

Consider the pattern target "%.o".  A .o file can be built from many
different types of sources: assembly files, C source files, C++ source
files, FORTRAN files, etc. etc.  So, if a prerequisite for "foo.o"
exists in the makefile but make cannot detect any pattern rule that
would successfully build it, make doesn't know which of those pattern
rules you expected it to match.  All it knows is that it didn't match
any of them.

> Any pointers on the add-on question would be very much appreciated.

Unfortunately I didn't really understand the process you're using.  Why
do you need to write hundreds or thousands of makefiles?

But in any event, this is not an unusual occurrence.  On a typical make
build system with auto-generated prerequisites it's not at all unusual
to have one makefile per object file defining that object file'd
prerequisites, and there can easily be hundreds or even thousands of
these in a larger project.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]