Makefile 为什么是gcc-“MM”;选项不生成.d输出

Makefile 为什么是gcc-“MM”;选项不生成.d输出,makefile,Makefile,我尝试了下面的代码树。如果我将头文件hello.h放入“inc”归档文件,并使用MM选项,则我的系统报告说,即使我在makefile中添加了vpath命令,也找不到hello.h。如果我将hello.h移回hello.c的同一目录,gcc-MM可以正常工作并成功列出依赖文件 如何让gcc知道在哪里自动找到头文件?下面是代码树,“hello.h”放在归档文件“inc”中 以下是我的makefile内容: vpath %.h /home/tempcode/inc hello: hello.o

我尝试了下面的代码树。如果我将头文件hello.h放入“inc”归档文件,并使用MM选项,则我的系统报告说,即使我在makefile中添加了vpath命令,也找不到hello.h。如果我将hello.h移回hello.c的同一目录,gcc-MM可以正常工作并成功列出依赖文件

如何让gcc知道在哪里自动找到头文件?下面是代码树,“hello.h”放在归档文件“inc”中

以下是我的makefile内容:

vpath %.h /home/tempcode/inc

hello: hello.o
    gcc -o hello hello.o

hello.o: hello.c hello.h
    gcc -c hello.c

debug:
    gcc -MM hello.c
如果我像这样直接运行gcc,它就会工作,这让我感到困惑。这是否意味着VPATH或VPATH不帮助gcc查找包含路径?如果是这样的话,我想vpath变量只会帮助“make”查找头文件,而不会帮助gcc,对吗

    [root@localhost tempcode]# gcc -MM -I/home/tempcode/inc hello.c
    hello.o: hello.c /home/tempcode/inc/hello.h
这是否意味着VPATH或VPATH不帮助gcc查找包含路径?如果是这样的话,我想vpath变量只会帮助“make”查找头文件,而不会帮助gcc,对吗

    [root@localhost tempcode]# gcc -MM -I/home/tempcode/inc hello.c
    hello.o: hello.c /home/tempcode/inc/hello.h
这是正确的。您应该设置
CFLAGS
变量以执行所需操作。编译C文件时,Make会自动包含
CFLAGS
。(<代码> CXFLASG< <代码> > C++)。在这种情况下,需要添加它来制作<代码> .d>代码>文件。我通常会这样做:

INCLUDES = -I/home/tempcode/inc
CFLAGS += $(INCLUDES)
CXXFLAGS += $(INCLUDES)

debug:
    gcc -MM $(CFLAGS) hello.c
这是否意味着VPATH或VPATH不帮助gcc查找包含路径?如果是这样的话,我想vpath变量只会帮助“make”查找头文件,而不会帮助gcc,对吗

    [root@localhost tempcode]# gcc -MM -I/home/tempcode/inc hello.c
    hello.o: hello.c /home/tempcode/inc/hello.h
这是正确的。您应该设置
CFLAGS
变量以执行所需操作。编译C文件时,Make会自动包含
CFLAGS
。(<代码> CXFLASG< <代码> > C++)。在这种情况下,需要添加它来制作<代码> .d>代码>文件。我通常会这样做:

INCLUDES = -I/home/tempcode/inc
CFLAGS += $(INCLUDES)
CXXFLAGS += $(INCLUDES)

debug:
    gcc -MM $(CFLAGS) hello.c