你需要在makefile中包含头文件吗?

时间:2015-01-27 09:26:01

标签: c makefile

bin/queueDriver.o:src/queueDriver.c include/queue.h 
    ${CC} ${CFLAGS} -o bin/queueDriver.o -c src/queueDriver.c

我正在学习Makefile,我现在真的很困惑。我已经写了一篇,现在我正在搞乱,我发现如果我采取

/include/queue.h 

从我的makefile中,项目仍然可以正确构建和执行。那是为什么?

2 个答案:

答案 0 :(得分:8)

make规则行上冒号后面的名称是 dependencies 。如果最近修改了任何依赖项而不是规则目标,则执行该规则。 (目标通常是一个文件,其名称与规则名称相同,认为有例外。)

如果您取出任何依赖项,那么您的目标仍然可以构建,但即使您更改了它所依赖的文件也不会重建(长期可能会导致更大规模的构建损坏)例如,当您尝试将从头文件的不同版本构建的两个对象链接在一起时。)


查找给定源文件所依赖的所有头文件通常不是人类可能的,因此通常使用各种辅助工具来自动生成依赖项。请注意,您可以稍后添加依赖项:

foo.o: foo.c      ## Manually written rule
        $(CC) -c -o $@ $^

## added later, e.g. by a tool
foo.o: foo.h
foo.o: bar.h

但总而言之,make是一个非常低级构建工具,它通常只用于非常小的项目或作为其他构建系统的后端(例如autotools或cmake)。

答案 1 :(得分:1)

我想有些人喜欢旧技术。

如果a,b,c,如果比x更新,那么make文件只会保存,然后构建x。

所以

x: a, b, c
  do this

基本上就是结构。

因此,只要不修改头文件,就删除头文件。

但请考虑一些其他技术,如SCONS,Gradle ......