GCC中预编译头结合依赖生成(-MM)失败,-fpch-deps使用求助
GCC预编译头与依赖生成(-MM)结合失败问题
我正尝试将预编译头与依赖生成(-MM)结合,为make生成依赖文件,但无法通过-fpch-deps实现二者结合。此举旨在加速需数小时构建的大型代码库的增量构建。使用GCC 9.3.1编译C代码,在红帽版本的GCC10中得到相同结果。
测试代码
// src/a.c #include "h.h" int main(int argc, char **argv) { printf("hello\n") ; }
// include/h.h #include <stdio.h>
测试步骤与命令
mkdir obj # 生成预编译头 gcc include/h.h -o obj/h.h.gch # 基于预编译头编译代码(验证有效) gcc -I obj src/a.c # 执行输出hello,确认预编译头工作正常 ./a.out # 尝试基于预编译头生成依赖(失败) gcc -MM -I obj -fpch-deps src/a.c -Winvalid-pch
报错信息
fatal error: h.h: no such file or directory
报错表明GCC未搜索obj/h.h.gch文件。
已完成的验证
- 通过
strace确认GCC在依赖生成期间未尝试访问预编译头文件 - 通过
gcc -v确认pch-deps和invalid-pch已传递给cc1 obj/h.h.gch文件已生成,权限正确
求助点
我是否误解或误用了-fpch-deps?望得到帮助。
内容的提问来源于stack exchange,提问作者dash-o
相关产品推荐
相关产品推荐

