我正在为旧项目开发一个Makefile。新的Makefile基于我在其他项目中成功使用的较旧的Makefile,但现在我面临一个奇怪的问题。
我的项目有以下形式:
├── Makefile
└── src
├── folder1
│ ├── somefiles.c
│ └── somefiles.h
├── folder2
│ ├── problematic.h
│ ├── somefiles.c
│ ├── somefiles.h
│ └── subdir
│ └── included_file.h
└── folder3
├── somefiles.c
└── somefiles.h
我的Makefile有以下一行:
LIBRARY_INC_PATHS = $(addprefix -I, $(shell find . -name '*.h' -printf '"%h"\n' | sort -u))
在档案problematic.h
中有以下行:
#include "subdir/included_file.h"
哪个会引起麻烦。 GCC说没有这样的文件或目录。
如果我将其更改为:
#include "included_file.h"
问题消失了,但在我的情况下这不是一个可接受的解决方案。
我应该对makefile进行哪些修改,以便我可以使用相对路径来包含我的C代码中的文件,而不仅仅是他们的名字?