【问题标题】:Unexpected end of file while looking for precompiled header查找预编译头文件时出现意外的文件结尾
【发布时间】:2021-02-18 18:33:03
【问题描述】:

我一直在尝试将我的代码组织到子文件夹中,并且自从我上次提交以来,我一直小心翼翼地不做任何额外的事情。我目前收到一堆C1010 错误说:

unexpected end of file while looking for precompiled header. Did you forget to add #include "pch.h" to your source?

每个文件都有相应的预编译头文件的相对包含路径。如果我尝试“去相对化”包含的预编译头文件,那么 Intellisense 就会开始抛出错误。

我怀疑我的 cmake 代码在这里可能有问题.. 特别是本节:...

if (MSVC)
    set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT Minecraft)

    set_target_properties(Minecraft PROPERTIES COMPILE_FLAGS "/Yupch.h")
    set_source_files_properties("src/pch.cpp" PROPERTIES COMPILE_FLAGS "/Ycpch.h")

    target_compile_options(Minecraft PRIVATE "/W4" "/MP" "/std:c++17")
endif()

【问题讨论】:

  • 每个*.cpp 文件是否都以#include "pch.h" 开头?
  • @RichardCritten 每个.cpp文件都以#include "pch.h"的适当相对版本开头
  • 启用预编译头文件后,每个源文件都应将#include "pch.h" 作为第一个非空非注释行
  • @ConnorMoody 屏幕截图中提到的文件(请以文本形式发布错误消息)没有#include 路径必须与编译器指令中的名称匹配,我不认为相对路径会工作的。
  • "... relative..." 这是指令与#include 不匹配的问题

标签: c++ visual-studio visual-c++ cmake pch


【解决方案1】:

所以替换下面的代码...

if (MSVC)
    set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT Minecraft)

    set_target_properties(Minecraft PROPERTIES COMPILE_FLAGS "/Yupch.h")
    set_source_files_properties("src/pch.cpp" PROPERTIES COMPILE_FLAGS "/Ycpch.h")

    target_compile_options(Minecraft PRIVATE "/W4" "/MP" "/std:c++17")
endif()

if (MSVC)
    set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT Minecraft)

    target_precompile_headers(Minecraft PRIVATE "src/pch.h")

    target_compile_options(Minecraft PRIVATE "/W4" "/MP" "/std:c++17")
endif()

解决了问题!

【讨论】:

    猜你喜欢
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2012-07-09
    • 2010-11-20
    相关资源
    最近更新 更多