%% Bryce Schober <[EMAIL PROTECTED]> writes: bs> When I first looked at the auto-dependency stuff at bs> http://make.paulandlesley.org/autodep.html, I was pretty excited, but bs> now I'm not so sure. What I'd really like is this:
bs> lib/ bs> foo.h bs> foo.c bs> src/ bs> main.c bs> In this scenario, foo.h declares a "library" function defined in bs> foo.c. This function is called in main.c, which includes foo.h. bs> As far as I know, this is the generally accepted way to modularize bs> things. However, gcc's dependency generation doesn't trace bs> main.c's dependency on foo.c, only on foo.h. That's because there isn't a dependency between main.c and foo.c. bs> How can this dependency be known? Or even assumed, given that bs> there is a corresponding .c file for .h file? It can't be known, because it doesn't exist. If you change something in foo.c, do you have to recompile main.c? No. So, there is no dependency relationship there. Now, maybe you take foo.c and turn it into foo.o, then you turn that into libfoo.a. And maybe you compile main.c into main.o, then you link main.o with libfoo.a and create a program "main". In that case, the program "main" has a dependency on both main.o and the library libfoo.a, and main.o depends on main.c and foo.h. Also, libfoo.a depends on foo.o which depends on foo.c and foo.h. But, main.c does not depend on foo.c. As for that auto-dependency generation yes, it's very true that it only deals with header files, or "source file prerequisites". You still have to define all the "internal" prerequisites, like "main" depending on main.o and libfoo.a, yourself in the makefile. No automated dependency generator could ever figure out that part for you. -- ------------------------------------------------------------------------------- Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at: http://www.gnu.org http://make.paulandlesley.org "Please remain calm...I may be mad, but I am a professional." --Mad Scientist _______________________________________________ Help-make mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/help-make
