强行包含未找到的标头

时间:2017-05-18 14:40:16

标签: c++ gcc include precompiled-headers

我正在尝试在使用GCC 5.4编译的大型C ++项目中设置预编译头文件。

有一个文件“PrecompiledHeaders.h”,其中包含所有其他相关标头。我添加了编译标志-include PrecompiledHeaders.h,但在编译时,找不到标题:

cc1plus: fatal error: PrecompiledHeaders.h: No such file or directory
compilation terminated.
CMakeFiles/Project.dir/build.make:62: recipe for target 'CMakeFiles/Project.dir/NetworkGameState.cpp.o' failed

但我确定它存在于与所有其他hcpp文件相同的目录中。更重要的是,手动将#include "PrecompiledHeaders.h"添加到“NetworkGameState.cpp”的顶部不会产生错误。 可能出现什么问题?

顺便说一下,这是一个CMake,源外构建。

1 个答案:

答案 0 :(得分:1)

这可能是路径的问题。来自the GCC 5.4 manual(强调我的):

  

-include 档案
  处理文件,好像#include "file"作为主要源文件的第一行出现。 但是,搜索文件的第一个目录是预处理器的工作目录而不是包含主源文件的目录。如果在那里找不到它,那么正常搜索#include "..."搜索链的其余部分。

您需要提供标头的完整(相对或绝对)路径作为-include标志的参数,或者使用例如将其父目录添加到搜索链中。 -I-iquote