制作隐式规则和头文件

Ele*_*ito 5 c makefile header-files

Make的隐含规则应该可以让Makefile变得更容易,但是,如果我的理解是正确的,如果我的C文件依赖于任何头文件,我需要明确地编写规则.我对吗?这似乎会严重降低隐式规则的有用性,因为大多数C文件都依赖于几个头文件,所以我想也许有些东西我不知道了.

Chr*_*oph 7

您可以使用以下makefile片段使用gcc自动生成标头依赖项

SOURCES := $(wildcard *.c)
DEPS := $(SOURCES:%.c=%.d)
CFLAGS += -MMD

-include $(DEPS)
Run Code Online (Sandbox Code Playgroud)

代码可能需要进行一些调整才能使用您的特定规则集.


thi*_*ton 5

您不需要编写规则,只需编写依赖项.例:

foo.o : foo.h bar.h
Run Code Online (Sandbox Code Playgroud)

文件foo.o仍将由隐式规则生成,但具有其他依赖项foo.hbar.h.大多数编译器也可以自动生成此依赖项.

  • @Homaymoon:查看例如GCC的`-M`标志(http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#Preprocessor-Options). (2认同)