Как исправить отсутствие файла .pch при сборке?
Когда я создаю свое решение на C ++ в Visual Studio, оно жалуется на отсутствие файла xxxxx.pch. Есть ли параметр, который мне не хватает, чтобы вернуть предварительно скомпилированные заголовки?
Вот точная ошибка для полноты:
11 ответов
ПРИМЕЧАНИЕ. Более поздние версии IDE могут использовать «pch» вместо «stdafx» в именах по умолчанию для связанных файлов. В приведенных ниже инструкциях может потребоваться заменить pch на stdafx. Я прошу прощения. Это не моя вина.
- Щелкните правой кнопкой мыши свой проект в обозревателе решений.
- Щелкните Свойства в нижней части раскрывающегося меню.
- В левом верхнем углу страниц свойств выберите в раскрывающемся меню «Все конфигурации».
- Откройте дерево C / C ++ и выберите Предварительно скомпилированные заголовки.
- Предварительно скомпилированный заголовок: выберите «Использовать» (/ Yu)
- Заполните поле Precompiled Header File. Стандарт — stdafx.h
Если у вас нет stdafx.h в ваших заголовочных файлах, поместите его туда. Редактировать в него # включить все заголовки, которые вы хотите предварительно скомпилировать.
Lucky 13. Скрестите пальцы и нажмите Build.
Я искал файл iOS PCH с той же проблемой, если вы попали сюда, как и я, решение, которое я нашел, — очистить производные данные; Закройте симуляторы, перейдите к параметрам xCode -> местоположения -> перейдите к пути к файлу производных данных, закройте xCode, удалите файлы в папке производных данных, перезапустите и приветствуйте 🙂
Я знаю, что эта тема очень старая, но недавно я имел дело с этим в VS2015, и что помогло, так это удаление папок сборки и ее повторная сборка. Это могло произойти из-за попытки закрыть программу или из-за остановки / зависания программы VS во время сборки.
Если все верно, но эта ошибка присутствует, необходимо проверить следующий раздел в файле ****. Vcxproj:
В моем случае это было неверное имя конфигурации: только первое слово.
Попробуйте Build> Clean Solution, затем Build> Build Solution. Это работает для меня.
Если это происходит с вами на сборке сервера (AppCenter) и вы используете CocoaPods, убедитесь, что ваш Podfile зарегистрирован.
AppCenter запускает команду «pod install» только в том случае, если он находит Pofile и НЕ находит папку PODS в файлах.
У меня была отмечена папка, но поскольку git автоматически игнорирует файлы .pch (проверьте .gitignore, чтобы проверить это), мой .pch не проверялся.
Я решил проблему, заставив файлы .pch проверять ее, но удаление папки PODS тоже должно работать, поскольку в этом случае Appcenter запустит команду установки модуля.
Надеюсь, это кому-то поможет.
Да, это можно устранить с помощью параметров / Yc, как указывали другие, но, скорее всего, вам не нужно прикасаться к нему, чтобы исправить это. Почему вы вообще получаете эту ошибку, не меняя никаких настроек? Возможно, вы «очистили» проект, а затем попытались скомпилировать один файл cpp. В этом случае вы получите эту ошибку, потому что заголовок прекомпилятора теперь отсутствует. Просто создайте весь проект (даже если он неудачный), а затем создайте любой отдельный файл cpp, и вы не получите эту ошибку.
- Щелкните правой кнопкой мыши проект и выберите пункт меню свойств.
- goto C / C ++ -> Предварительно скомпилированные заголовки
- Выберите «Не использовать предварительно скомпилированные заголовки»
Убедитесь, что в вашем проекте есть xxxxx.cpp
Скомпилируйте xxxxx.cpp с флагом / Yc ( Создать предварительно скомпилированный заголовок)
(щелкните правой кнопкой мыши xxxxx.cpp -> свойства -> Предварительно скомпилированные заголовки -> создать )
Скомпилируйте все остальные файлы с флагом / Yu ( Используйте предварительно скомпилированный заголовок)
(щелкните правой кнопкой мыши проект -> свойства -> Предварительно скомпилированные заголовки -> использовать )
Использование предварительно скомпилированного заголовка (pch) — это двухэтапный процесс.
На первом этапе вы компилируете файл-заглушку (в VS200x он обычно называется stdafx.cpp . В более новых версиях используется pch.cpp .). Этот файл-заглушка косвенно включает только те заголовки, которые вы хотите предварительно скомпилировать. Обычно в одном небольшом заголовке (обычно stdafx.h или pch.hpp ) перечислены стандартные заголовки, такие как и , которые затем включаются в файл-заглушку. При компиляции создается файл .pch.
На шаге 2 ваш фактический исходный код включает тот же небольшой заголовок из шага 1, что и первый заголовок. Компилятор, когда он встречает этот специальный заголовок, вместо этого читает соответствующий файл .pch. Это означает, что ему не нужно каждый раз (пере) компилировать эти стандартные заголовки.
В вашем случае кажется, что шаг 1 не выполняется. Файл-заглушка все еще присутствует? В вашем случае это, вероятно, будет xxxxx.cpp . Это должен быть файл, скомпилированный с помощью /Yc:xxxxx.pch , поскольку это флаг компилятора, указывающий, что это шаг 1 процесса PCH. Если присутствует xxxxx.cpp и является таким файлом-заглушкой, то, вероятно, отсутствует его параметр компилятора /Yc: .
VS облажался (у меня 2019; (). Продолжайте и выберите «не использовать предварительно скомпилированные заголовки», как указывают другие ребята, затем откройте файл проекта (vcxproj) с помощью любого текстового редактора и удалите выделенные две записи в двух местах. Наслаждайтесь На самом деле, запись pch.h в файле vcxproj, которую вы видите ниже, вы всегда найдете в интерфейсах свойств VS.
Источник
Как исправить файл .pch, отсутствующий при сборке?
Когда я собираю свое решение c ++ в Visual Studio, он жалуется на отсутствие файла xxxxx.pch. Есть ли параметр, который мне не хватает, чтобы вернуть предварительно скомпилированные заголовки?
Вот точная ошибка для полноты:
ПРИМЕЧАНИЕ. Более поздние версии IDE могут использовать «pch» вместо «stdafx» в именах по умолчанию для связанных файлов. Может быть необходимо заменить pch на stdafx в инструкциях ниже. Я извиняюсь. Это не моя вина.
- Щелкните правой кнопкой мыши свой проект в обозревателе решений.
- Нажмите Свойства в нижней части раскрывающегося меню.
- В верхнем левом углу страницы свойств выберите «Все конфигурации» в раскрывающемся меню.
- Откройте дерево C / C ++ и выберите «Предварительно скомпилированные заголовки».
- Предварительно скомпилированный заголовок: выберите «Использовать» (/ Yu)
- Заполните поле «Файл скомпилированного заголовка». Стандарт это stdafx.h
Если у вас нет файла stdafx.h в заголовочных файлах, поместите его туда. Отредактируйте его так, чтобы #include все заголовки, которые вы хотите предварительно скомпилировать.
К счастью 13. Скрестите пальцы и нажмите Build.
Использование предварительно скомпилированного заголовка (pch) представляет собой двухэтапный процесс.
На первом этапе вы компилируете файл-заглушку (в VS200x он обычно называется stdafx.cpp . Используются более новые версии pch.cpp .). Этот стаб-файл косвенно включает в себя только те заголовки, которые вы хотите предварительно скомпилировать. Как правило, один маленький заголовок (обычно stdafx.h или pch.hpp ) перечисляет стандартные заголовки, такие как и , и это затем включается в файл-заглушку. Компиляция этого создает файл .pch.
На шаге 2 ваш фактический исходный код содержит тот же маленький заголовок, что и на шаге 1, что и первый заголовок. Когда компилятор встречает этот специальный заголовок, компилятор читает соответствующий файл .pch. Это означает, что нет необходимости (пере) компилировать эти стандартные заголовки каждый раз.
В вашем случае кажется, что шаг 1 не выполняется. Заглушка все еще присутствует? В вашем случае это, вероятно, будет xxxxx.cpp . Это должен быть файл, который скомпилирован /Yc:xxxxx.pch , так как это флаг компилятора, указывающий, что это шаг 1 процесса PCH. Если xxxxx.cpp он присутствует и является таким файлом-заглушкой, то, вероятно, ему не хватает /Yc: опции компилятора.
Убедитесь, что у вас есть xxxxx.cpp в вашем проекте
Скомпилируйте xxxxx.cpp с флагом / Yc ( Создать предварительно скомпилированный заголовок)
(щелкните правой кнопкой мыши xxxxx.cpp -> Свойства -> Скомпилированные заголовки -> Создать )
Скомпилируйте все остальные файлы с флагом / Yu ( Использовать предварительно скомпилированный заголовок)
(щелкните правой кнопкой мыши на проекте -> Свойства -> Предварительно скомпилированные заголовки -> Использовать )
Источник
Как исправить.файл pch отсутствует в сборке?
когда я строю свое решение на c++ в Visual Studio, он жалуется, что xxxxx.файл pch отсутствует. Есть ли параметр, который мне не хватает, чтобы вернуть предварительно скомпилированные заголовки?
вот точная ошибка для полноты:
9 ответов:
Примечание: более поздние версии IDE могут использовать «pch «вместо» stdafx » в именах по умолчанию для связанных файлов. Возможно, потребуется заменить PCH на stdafx в приведенных ниже инструкциях. Прошу прощения. Это не моя вина.
- Правой Кнопкой Мыши проект в обозревателе решений.
- Нажмите кнопку Свойства в нижней части раскрывающегося меню.
- в левом верхнем углу страницы свойств, выберите все конфигурации из раскрывающегося списка меню.
- откройте дерево C/C++ и выберите предварительно скомпилированные заголовки
- Предварительно Скомпилированный Заголовок: Выберите Использовать (/Yu)
- заполните поле предварительно скомпилированный файл заголовка. Стандарт-stdafx.h
Нажмите Кнопку ОК
Если у вас нет stdafx.h в ваших заголовочных файлах поместите его туда. Редактировать его включать все заголовки, которые вы хотите предкомпилированного.
повезло 13. Скрестите пальцы и нажмите построить.
использование предварительно скомпилированного заголовка (pch)-это двухэтапный процесс.
на первом шаге вы компилируете стаб-файл (в VS200x он обычно называется stdafx.cpp ). Этот стаб-файл косвенно включает только заголовки, которые вы хотите предварительно скомпилировать. Как правило, один небольшой заголовок (обычно stdafx.h ) список стандартных заголовков, таких как и , и это затем включается в файл заглушки. Компиляция это создает .файл PCH.
в шаге 2, ваш фактический исходный код включает в себя тот же небольшой заголовок на шаге 1 в качестве первого заголовка. Компилятор, когда он встречает этот специальный заголовок, читает соответствующий .вместо этого файл pch. Это означает, что он не должен (пере)собрать эти стандартные заголовки каждый раз.
в вашем случае, кажется, Шаг 1 не удается. Стаб-файл все еще присутствует? В вашем случае, это, вероятно, будет xxxxx.cpp . Это должен быть файл, который компилируется с /Yc:xxxxx.pch , так как это флаг компилятора, чтобы указать, что это шаг 1 процесса PCH. Если xxxxx.cpp присутствует, и такой тупиковый файл, то он, вероятно, отсутствует его /Yc: опции компилятора.
убедитесь, что у вас есть xxxxx.cpp в проект
Compile xxxxx.cpp С флагом /Yc (создать Предварительно Скомпилированный Заголовок)
(щелкните правой кнопкой мыши на xxxxx.cpp — > свойства — > предварительно скомпилированные заголовки ->создать)
Compile все остальные файлы С флагом /Yu (использовать Предварительно Скомпилированный Заголовок)
(щелкните правой кнопкой мыши на проект — > свойства -> предварительно скомпилированные заголовки -> использовать)
- щелкните правой кнопкой мыши на проекте и выберите пункт меню Свойства
- goto C / C++ — > предварительно скомпилированные заголовки
- Выберите Не Использовать Предварительно Скомпилированные Заголовки
да, его можно устранить с помощью параметров /Yc, как указывали другие, но, скорее всего, вам не нужно будет прикасаться к нему, чтобы исправить это. Почему вы получаете эту ошибку, в первую очередь, без изменения каких-либо настроек? Возможно, вы «очистили» проект и попытались скомпилировать один файл cpp. Вы получите эту ошибку в этом случае, потому что заголовок прекомпилятора теперь отсутствует. Просто постройте весь проект (даже если он неудачный), а затем создайте какой-либо один файл cpp, и вы этого не получите ошибка.
Если все правильно, но эта ошибка присутствует, то нужно проверить следующий раздел ****.файл vcxproj:
в моем случае это было неправильное имя конфигурации: только первое слово.
Я знаю, что эта тема очень старая, но я занимался этим в VS2015 недавно, и то, что помогло, было удалено папки сборки и повторно построить его. Это может произойти из-за попытки закрыть программу или программу остановки/замораживания VS во время построения.
Я искал файл PCH iOS, имеющий ту же проблему, если вы попали сюда, как и я, решение, которое я нашел, — это очистка производных данных; закройте симулятор(Ы), перейдите в Xcode prefs — > locations — > перейдите в путь к файлу производных данных, закройте xCode, удалите файлы в папке производных данных, повторно запустите и приветствуйте 🙂
попробуйте построить > чистое решение, затем построить > построить решение. этой работает для меня.
Источник