【发布时间】:2012-12-09 16:09:45
【问题描述】:
来个小故事
这几天我试图追踪Makefile的编译过程。根据EDK override mechanism,一个组件同时使用覆盖路径下的同名源代码编译,其余在组件目录下。
假设有两个同名的头文件,目录路径如下:
组件目录 - D:\outside\inner\hello.h
覆盖目录 - D:\outside\inner\overrides\hello.h
所以,D:\outside\inner\overrides 在编译期间使用。
但是,问题来了!
众所周知,我们可以在 Makefile 中添加宏来指示包含路径。 例如:
INC = -I D:\outside\inner
然后我添加了另一个包含路径,例如:
INC = $(INC) -I D:\outside\inner\overrides
如果我在 Makefile 中设置如下命令:
hello : hello.c hello.h<Tab>gcc -c hello hello.c $(INC)
编译器是否仍会采用覆盖路径下的 hello.h 文件? 还是只通过INC路径(组件路径)获取第一个找到的文件?
感谢您的回答。
【问题讨论】:
标签: include makefile duplicates