Неожиданный конец файла при поиске предварительно скомпилированного заголовка

Я пытался организовать свой код в подпапки и старался не делать ничего лишнего с момента моего последнего коммита. В настоящее время я получаю кучу ошибок 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()

person Community    schedule 18.02.2021    source источник
comment
Каждый файл *.cpp начинается с #include "pch.h"?   -  person Richard Critten    schedule 18.02.2021
comment
@RichardCritten Каждый файл .cpp начинается с соответствующей относительной версии #include "pch.h"   -  person    schedule 18.02.2021
comment
Когда предварительно скомпилированные заголовки включены, каждый исходный файл должен иметь #include "pch.h" в качестве первой непустой строки без комментариев.   -  person drescherjm    schedule 18.02.2021
comment
@ConnorMoody Когда-либо файл, упомянутый на снимке экрана (пожалуйста, публикуйте сообщения об ошибках в виде текста), не имеет #include, путь должен соответствовать имени в директиве компилятора, я не думаю, что относительные пути будут работать.   -  person Richard Critten    schedule 18.02.2021
comment
Возможно, Intellisense путают с этим: файл начинается с соответствующей относительной версии   -  person drescherjm    schedule 18.02.2021
comment
Почему бы не использовать cmake target_precompile_headers вместо того, чтобы пытаться создавать свои собственные ?   -  person spectras    schedule 18.02.2021
comment
@RichardCritten Об этом говорят сообщения об ошибках, но это не так. Каждый файл .cpp действительно начинается сразу с соответствующей относительной версии #include "pch.h".   -  person    schedule 18.02.2021
comment
@spectras Я полагаю, что это вариант, мне нужно было бы научиться его реализовывать, но с технической точки зрения это должно работать независимо.   -  person    schedule 18.02.2021
comment
... относительный... проблема в том, что директива не соответствует #include   -  person Richard Critten    schedule 18.02.2021
comment
Я всегда добавляю включаемые каталоги через CMake и просто использую #include "pch.h"   -  person drescherjm    schedule 18.02.2021
comment
@RichardCritten Intellisense, похоже, выдает ошибки, если я де-релятивизирую включение pch.h?   -  person    schedule 18.02.2021


Ответы (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()

решил вопрос!

person Community    schedule 18.02.2021