C 尽管使用了-I选项,但未找到标头

C 尽管使用了-I选项,但未找到标头,c,gcc,makefile,include,C,Gcc,Makefile,Include,我有一个不同目录下的文件项目。目录A包含两个目录B和C,C包含一个目录D。文件在B、C和D中。我编写了makefiles来编译它,主makefile在C中。 C Makefile包含以下行: export LDFLAGS = -I ../B -I . -I ../C/D -lm (起初,我没有写“./C/D”,而是写了“./D”,但后来我因为出错而改变了,只是为了确保路径对B也是有效的。不过,它没有改变任何东西) B中的makefile包含以下规则: %.o : %.c $(CC) $

我有一个不同目录下的文件项目。目录A包含两个目录B和C,C包含一个目录D。文件在B、C和D中。我编写了makefiles来编译它,主makefile在C中。 C Makefile包含以下行:

export LDFLAGS = -I ../B -I . -I ../C/D -lm
(起初,我没有写“./C/D”,而是写了“./D”,但后来我因为出错而改变了,只是为了确保路径对B也是有效的。不过,它没有改变任何东西)

B中的makefile包含以下规则:

%.o : %.c
    $(CC) $(CFLAGS) -o $@ -c $< $(LDFLAGS)
因此,当make意识到需要myccpfile.o时,他神奇地拨打了电话

g++    -c -o ../B/myccpfile.o ../B/mycppfile.cpp

所以现在我真的不明白这个调用是从哪里来的,这真的很奇怪,因为使用g++的唯一规则是CFLAGS和LDFLAGS,我不明白它们为什么消失了…

Its
CFLAGS
,它要求编译阶段使用-I选项。检查B makefile是否使用适当的-I选项设置了CFLAGS


LDFLAGS
只会影响链接器选项。

我在规则中添加了$(LDFLAGS),它应该会影响.o的编译,不是吗?然而,我试图在CFLAGS中添加这些-I选项,但仍然存在错误。无论如何谢谢你!我不能复制这个。也许你可以给我们一个最简单完整的例子。。。
b : 
    @(cd $(BDIR) && $(MAKE))
g++    -c -o ../B/myccpfile.o ../B/mycppfile.cpp