我如何告诉 gnu make 头文件在哪里?

how do I tell gnu make where a header file is?

我有一个简单的 C 文件,可以编译。我现在正尝试向其添加位于

的外部头文件
../../myotherdir/tbt/include

这是我的 C 文件:

/* Hello World program */
#include<stdio.h>
#include "app.h"
main()
  {
      printf("Hello World");

  }

这是我的 makefile:

headerdir = ../../mytree2/tlk/include
hello: hello.c **app.h** 
    gcc -I$(headerdir) hello.c -o hello

如何让 make 在 myotherdir/tbt/include 中搜索头文件并将它们添加到我的项目中?

我按照 Mureinik 的建议更新了 makefile。谢谢它的工作。现在我收到一个不同的错误,指出我没有制定 app.h 的规则。

我发现了我认为的错误。我不应该添加 app.h 作为先决条件。我在上面用粗体突出显示了它。删除该行后,我遇到了其他错误,但我的 make 文件似乎可以正常工作。谢谢 Mureinik。

gcc -o hello.o -I$(headerdir) hello.c

您不需要像那样指定 VPATH。 您可以更改 headerdir 以包含更多头文件。例如

headerdir = ../../myotherdir/tbt/include ../path/to/next/header/dir ../etc/etc

您可以使用 -I 参数来设置附加 headers:

的位置
hello: hello.c app.h 
    gcc -I${headerdir} hello.c -o hello