Makefile用于多个.c和.h文件

时间:2013-06-20 13:16:11

标签: c makefile

我有一个1.c 2.c .... nc文件并且有依赖.h文件也...我知道为多个c文件创建make文件。但我不知道如何创建make c文件链接到.h文件的文件。如果我尝试makefile,我知道它会给出错误,如

make: *** No rule to make target '2.h', needed by '2.o'  .Stop.

我也不需要这种类型的makefile。

program: main.o dbAdapter.o
   gcc -o program main.o dbAdapter.o

main.o: main.c dbAdapter.h
   gcc -c main.c

dbAdapter.o dbAdapter.c dbAdapter.h
   gcc -c dbAdapter.c

这适用于4或5个文件。但如果我有大量文件,最佳解决方案是什么?

3 个答案:

答案 0 :(得分:2)

您可以通过以下方式链接Makefile中的所有.h:

  1. 将所有.h放在同一个文件中(例如我们称之为“Include”)

  2. 在Makefile中添加:gcc * .c -I / path / Include -iInclude

  3. Ps:编译.c文件的方式有点奇怪。  通常我们使用这个:

    SRC = 1.c
          2.c
          n.c
    
    OBJ = $(SRC:.c=.o)
    
    all:  $(OBJ)
          gcc $(SRC) -I/path/Include -iInclude    (where path is the location of your file called "Include")
    

答案 1 :(得分:0)

只要我使用C,我就永远不会编写包含头文件(.h)的make文件,头文件在这里公开一些数据结构和方法,其他C模块需要的常量。 您不需要为头文件创建规则,您只需构建.o对象,然后当您创建可执行文件时,liker将为您提供魔力。 如果您需要帮助创建一个make文件,您可以在这里解释您想要构建的内容,我会向您发送一个提示。 欢呼声。

答案 2 :(得分:0)

如果您的头文件不在当前目录中并且您将其包含在Makefile中,Make开始在默认位置查找头文件,但在您的情况下无法找到它们。

您应该将2.h个头文件放在当前目录中以避免此搜索。