- Makedepend
makedepend is a
Unix tool used to generate dependencies of C source files.History
makedepend
was developed as part ofMIT 'sProject Athena . It was used extensively in buildingX11 and ancillary packages, but has since become superseded by the dependency generation facilities of various compilers, and is now used primarily as a worst-case fallback, e.g. bydepcomp andGNU Automake .Usage
makedepend
is invoked with a list of sourcefiles: makedepend [options] foo.c bar.c ...However, it is more often invoked as a target from a makefile, typically under thedepend
target, such thatmake depend
will invokemakedepend
on all source files in the project. One such example target would be as follows: SRCS = file1.c file2.c ... CFLAGS = -O -DHACK -I../foobar -xyz depend: makedepend -- $(CFLAGS) -- $(SRCS)Purpose
When building C language projects, it is imperative for incremental compilation (and useful for clean compilation) to be able to track dependencies between
compilation unit s. C expresses interfaces between compilation units viaheader file s; as such, it is often necessary to rebuild a compilation unit when a header it includes is changed. make needs to be informed of these dependencies.makedepend
solves this problem by parsing the code of C source files to generate a list of dependencies (those header files included directly and indirectly). It is able to understandconditional compilation constructs so as to not generate excessive dependencies. It then appends rules expressing the dependencies to the Makefile.Alternatives
Most modern compilers provide a flag (often
-M
) that uses the compiler's own source parser to generate a list of dependencies. This may be preferred tomakedepend
because it reduces the likelihood of the dependencies generated being at odds with the compiler's own behaviour.Since compilers accept different flags for dependency generation, and may behave differently in outputting dependency information, it is desirable to use a wrapper script that can invoke the compiler appropriately (and fall back to
makedepend
if necessary). One popular such wrapper script isdepcomp , which is distributed with and used byGNU Automake . [ [http://sources.redhat.com/automake/automake.html#Dependency-Tracking Dependency Tracking in Automake] , Automake Manual]References
*
* [http://xorg.freedesktop.org/releases/individual/util/ Directory where the]sourcecode is available
Wikimedia Foundation. 2010.