Когда я собираю свое решение c ++ в Visual Studio, он жалуется на отсутствие файла xxxxx.pch. Есть ли параметр, который мне не хватает, чтобы вернуть предварительно скомпилированные заголовки?
Вот точная ошибка для полноты:
Error 1 fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory
c++
visual-studio
precompiled-headers
pch
Сэм Маккрилл
источник
источник
Ответы:
ПРИМЕЧАНИЕ. Более поздние версии IDE могут использовать «pch» вместо «stdafx» в именах по умолчанию для связанных файлов. Может быть необходимо заменить pch на stdafx в инструкциях ниже. Я извиняюсь. Это не моя вина.
Нажмите хорошо
Если у вас нет файла stdafx.h в заголовочных файлах, поместите его туда. Отредактируйте его так, чтобы #include все заголовки, которые вы хотите предварительно скомпилировать.
К счастью 13. Скрестите пальцы и нажмите Build.
источник
stdafx.pch
файл, в то время какxxxxx.pch
из вопроса намекает на более сложную проблему (настройка нескольких PCH).Использование предварительно скомпилированного заголовка (pch) представляет собой двухэтапный процесс.
На первом этапе вы компилируете файл-заглушку (в VS200x он обычно называется
stdafx.cpp
. Используются более новые версииpch.cpp
.). Этот стаб-файл косвенно включает в себя только те заголовки, которые вы хотите предварительно скомпилировать. Как правило, один маленький заголовок (обычноstdafx.h
илиpch.hpp
) перечисляет стандартные заголовки, такие как<iostream>
и<string>
, и это затем включается в файл-заглушку. Компиляция этого создает файл .pch.На шаге 2 ваш фактический исходный код содержит тот же маленький заголовок, что и на шаге 1, что и первый заголовок. Когда компилятор встречает этот специальный заголовок, компилятор читает соответствующий файл .pch. Это означает, что нет необходимости (пере) компилировать эти стандартные заголовки каждый раз.
В вашем случае кажется, что шаг 1 не выполняется. Заглушка все еще присутствует? В вашем случае это, вероятно, будет
xxxxx.cpp
. Это должен быть файл, который скомпилирован/Yc:xxxxx.pch
, так как это флаг компилятора, указывающий, что это шаг 1 процесса PCH. Еслиxxxxx.cpp
он присутствует и является таким файлом-заглушкой, то, вероятно, ему не хватает/Yc:
опции компилятора.источник
Fix:
Убедитесь, что у вас есть xxxxx.cpp в вашем проекте
Скомпилируйте xxxxx.cpp с флагом / Yc ( Создать предварительно скомпилированный заголовок)
(щелкните правой кнопкой мыши xxxxx.cpp -> Свойства -> Скомпилированные заголовки -> Создать )
Скомпилируйте все остальные файлы с флагом / Yu ( Использовать предварительно скомпилированный заголовок)
(щелкните правой кнопкой мыши на проекте -> Свойства -> Предварительно скомпилированные заголовки -> Использовать )
источник
источник
Create (/Yc)
(чтобы восстановить, а затем использовать его снова)Да, это можно устранить с помощью параметров / Yc, как указали другие, но, скорее всего, вам не нужно прикасаться к нему, чтобы исправить это. Почему вы получаете эту ошибку в первую очередь без изменения каких-либо настроек? Возможно, вы «очистили» проект и попытались скомпилировать один файл cpp. Вы получите эту ошибку в этом случае, потому что заголовок прекомпилятора теперь отсутствует. Просто соберите весь проект (даже если он неудачный), а затем соберите какой-нибудь отдельный файл cpp, и вы не получите эту ошибку.
источник
В случае, если это происходит с вами при сборке сервера (AppCenter) и вы, используя CocoaPods, убедитесь, что ваш Podfile установлен.
AppCenter запускает команду «pod install» только в том случае, если находит Pofile и НЕ находит папку PODS в файлах.
Я зарегистрировал папку, но, поскольку git автоматически игнорирует файлы .pch (проверьте .gitignore, чтобы проверить это), мой .pch не был зарегистрирован.
Я решил проблему, заставив файлы .pch проверить ее, но удаление папки PODS также должно работать, так как в этом случае Appcenter запустит команду pod install.
Надеюсь, это кому-нибудь поможет.
источник
Если все верно, но эта ошибка присутствует, необходимо проверить следующий раздел в файле ****. Vcxproj:
В моем случае это было неверное имя конфигурации: только первое слово.
источник
Я знаю, что эта тема очень старая, но я недавно имел дело с этим в VS2015, и что помогло, это удалить папки для сборки и перестроить ее. Это могло произойти из-за попытки закрыть программу или остановить или заморозить программу во время сборки.
источник
Я искал файл PCH для iOS с той же проблемой, и если вы попали сюда, как я, то решение, которое я нашел, - очистка производных данных; Закройте симулятор (ы), перейдите к префиксам xCode -> местоположения -> перейдите к пути к файлу производных данных, закройте xCode, удалите файлы в папке производных данных, перезапустите и приветствуйте :)
источник
Попробуйте Построить> Чистое решение, затем Построить> Построить решение. Это работает для меня.
источник