https://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html 列出了预编译头可用于给定编译器调用所需满足的前提条件。
简而言之:
相同的-m -f -p -O选项,例外情况为: -fmessage-lenght = -fpreprocessed -fsched-interblock -fsched-spec -fsched-spec-load -fsched-spec-load-dangerous -fsched-verbose = number -fschedule-insns -fvisibility = -pedantic-errors
-g至少如果编译是用-g(=> pchs应该总是用-g编译)
我很好奇我是否可以自动管理任意选项集。
我的想法是我可以通过一个包装器来运行我的gcc调用,该包装器将从中提取有关编译器二进制文件和-m -f -p -O选项的信息,根据此信息形成编译头的文件路径,检查如果预编译头已经在那里并且如果没有创建它,则将头部的目录添加到预处理器的iquote或isystem搜索路径中,并运行实际的包装gcc调用。
有更好的方法吗?如果没有,有没有办法提取gcc选项而不必与记录的gcc选项集保持同步?