It’s probably a very nice case, but having a prerequisite like “-lfoo” that 
matches a “libfoo.a” target would be useful for decoupling say one makefile 
with the rule “main.exe: -lfoo” and another in subdir “foo” that has “libfoo.a: 
libfoo.a(foo/foo.o)”. The only change needed to have make choose between 
building the lib and searching for it would be whether to “include 
foo/Makefile” / add “-f foo/Makefile” when invoking make.




>You cannot use it for libraries make has to build, because make doesn't
>know what name to use for them.  Remember make starts from the final
>target to be built and works backwards, looking at prerequisites.  So
>when make sees a prerequisite like "-lfoo", it then tries to look up the
>name existing on the filesystem using the algorithms described in the
>manual.  Since the file doesn't exist yet make doesn't know which one it
>should build.




Using the very first example I gave (-lfoo: libfoo.a(foo.o) ;) it does build 
the lib, the only issue is that it relinks main.exe on each subsequent run even 
though libfoo.a hasn’t been touched. I suppose it’s just a quirk of doing 
something I shouldn’t be. As mentioned “-lfoo libfoo.a: “ fixes that, although 
I get the feeling it’ll break something at some point that I haven’t considered.
_______________________________________________
Help-make mailing list
Help-make@gnu.org
https://lists.gnu.org/mailman/listinfo/help-make

Reply via email to