【问题标题】:Forcibly included header not found未找到强制包含的标头
【发布时间】:2017-10-18 10:51:00
【问题描述】:

我正在尝试在使用 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,源外构建。

【问题讨论】:

    标签: c++ gcc include precompiled-headers


    【解决方案1】:

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

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

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

    【讨论】:

    • 啊,我读到了,但是读错了。我认为它会先这样做,然后继续源文件的目录,然后再继续。那一定是这样
    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2017-03-23
    • 2016-09-03
    • 1970-01-01
    相关资源
    最近更新 更多