假设我有这个例子.h:
// example.c
#include "example.h"
#include "a.h"
#include "b.h"
#include "c.h"
#include "d.h"
#include "e.h"
并且example.c:
example.o : example.h example.c
gcc -c example.c -o example.o
我的Makefile应该是这样的吗? :
example.o : example.h example.c a.h b.h c.h d.h e.h
gcc -c example.c -o example.o
或者应该看起来像这样? :
intl
答案 0 :(得分:1)
1)它应该看起来像你的第二个版本:
example.o : example.h example.c a.h b.h c.h d.h e.h
gcc -c example.c -o example.o
2)没有理由在#include
和example.h
中出现相同的example.c
语句,冗余的#include
语句是kruft,应该删除。为安全起见,请将它们放入example.h
;为了提高效率,请尽可能将它们放入example.c
。 (我不会详细介绍何时可以在这里,但编译器会在你弄错的时候告诉你。)
3)如果您不想在makefile中维护该标题列表,gcc和Make可以为您处理它。这是一个例子,但这是an advanced technique,所以我建议你不要使用它,直到你理解它是如何工作的:
example.o : example.c
gcc -MMD -c example.c -o example.o
-include *.d