假设您有2个文件:
A.h
和A.cpp
,其中A.cpp
包含A.h
您将标题预编译为A.h.gch
并删除A.h
有2个文件:
A.cpp
和A.h.gch
,如何使用g ++编译最终产品?
就我而言,g++
抱怨.h
文件无处可寻。
答案 0 :(得分:1)
我不是专家,而是来自Wikipedia:
GCC只能使用预编译版本,如果设置相同的编译器开关,就像编译头文件时一样,它最多可以使用一个。
我试过了:
g++ a.h
rm a.h
g++ -c a.cpp
你可以看看g ++是否正在使用它:
g++ -H -c a.cpp
! a.h.gch
a.cpp
答案 1 :(得分:1)
我认为g ++会检查标题的日期,看看gch是否过时了。 令我惊讶的是,事实并非如此。我可以修改并重命名标题,仍然可以编译cpp。
如果某些参数与创建gch时的参数不同,编译将失败。 因此,我假设您的编译失败,因为GCC precompiled header docs中提到的至少一个条件未得到满足。
如果您经常在不同的编译配置之间切换,您可以为每个配置使用包含pch的目录,如该文档中所述。
如果您只想确保/如果使用了pch,请使用-Winvalid-pch
选项,并确保在每次更改标题后更新pch。