查找预编译头文件时出现意外的文件结尾

问题描述

我一直在尝试将我的代码组织到子文件夹中,并且自从我上次提交以来,我一直小心翼翼地不做任何额外的事情。我目前收到一堆 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()

解决方法

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

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()

解决了问题!