makedepend

From Wikipedia, the free encyclopedia
Jump to: navigation, search

makedepend is a Unix tool used to generate dependencies of C source files.

Contents

History

makedepend was developed as part of MIT's Project Athena. It was used extensively in building X11 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. by depcomp and GNU 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 the depend target, such that make depend will invoke makedepend 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 units. C expresses interfaces between compilation units via header files; 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 understand conditional 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 to makedepend 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 is depcomp, which is distributed with and used by GNU Automake.[1]

Solaris make includes support for dependency tracking that is activated by specifying the "special-function target" .KEEP_STATE[2].


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值