GCC在适当的目录中为生成的头文件创建依赖项

GCC在适当的目录中为生成的头文件创建依赖项,gcc,gnu-make,Gcc,Gnu Make,我使用GCC从存储在 某些目录。这是我的食谱: gcc -MM -MG -MT obj/$*.o -MP -MF dep/$*.Td -I include $< gcc-MM-MG-MT obj/$*.o-MP-MF dep/$*.Td-I包括$< 其中一个头文件是生成的(使用Bison 3.0.5),因此它可能不会 存在。因此,我使用了如上所示的-MG选项,但它会生成 没有目录的依赖项。如何将make或GCC调整为 是否将include目录前置到生成的头 提前谢谢 dordow通常,

我使用GCC从存储在 某些目录。这是我的食谱:

gcc -MM -MG -MT obj/$*.o -MP -MF dep/$*.Td -I include $<
gcc-MM-MG-MT obj/$*.o-MP-MF dep/$*.Td-I包括$<
其中一个头文件是生成的(使用Bison 3.0.5),因此它可能不会 存在。因此,我使用了如上所示的-MG选项,但它会生成 没有目录的依赖项。如何将make或GCC调整为 是否将include目录前置到生成的头

提前谢谢


dordow

通常,搜索路径有许多条目,如果头文件不存在,则不清楚选择哪个前缀

cook
构建工具附带了一个程序
c_incl
,它可以扫描c源文件中的
\include
指令,并可以使其按照您想要的方式运行,使用类似于
c_incl-No_Cache-缺席\u System\u note-Iinclude-c
的命令。但这个工具相当模糊


使用稍微不那么晦涩的GNU make特性可能更好:如中所述,仅订购先决条件。您可以将生成的头文件(或其他Bison输出文件)列为编译C文件的所有规则的仅需订购的先决条件,以便在第一次构建时尽早生成这些头文件,但不必在以后触发重建。使用这种方法,您不需要对尚不存在的文件生成依赖项。

是否希望生成的依赖项具有
include/
前缀?是的,完全正确。你有什么建议吗?是的,这很好,非常优雅,只是对规则的一个小小扩展。我已经开始摆弄塞德了。谢谢。直率的