假设我有这个例子.h:
// example.h
#include "a.h"
#include "b.h"
#include "c.h"
#include "d.h"
#include "e.h"
和例子.c:
// example.c
#include "example.h"
#include "a.h"
#include "b.h"
#include "c.h"
#include "d.h"
#include "e.h"
我的 Makefile 应该看起来像这样吗?
:example.o : example.h example.c
gcc -c example.c -o example.o
还是应该看起来像这样?
:example.o : example.h example.c a.h b.h c.h d.h e.h
gcc -c example.c -o example.o
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(没有理由在example.h
和example.c
中同时出现相同的#include
语句,多余的#include
语句是粗鲁的,应该被删除。为了安全起见,请将它们放在example.h
;为了提高效率,请尽可能将它们放在example.c
。(我不会在这里详细介绍你什么时候可以,但编译器会在你弄错的时候告诉你。
3(如果您不想在makefile中维护该标头列表,gcc和Make可以为您处理。这里有一个例子,但这是一种高级技术,所以我建议你在了解它是如何工作的之前不要使用它:
example.o : example.c
gcc -MMD -c example.c -o example.o
-include *.d