Проблема действительно в устаревших сгенерированных файлах в исходном каталоге проекта. Это может происходить как с генерируемыми файлами ui_*.h
, так и с файлами moc_*.*
. Ниже не охвачены существующие ответы, поэтому здесь мы идем:
Чтобы удалить сгенерированные файлы из исходного каталога проекта, не затрагивая настройки Qt Creator или текущие каталоги теневых сборок, есть два основных способа, которые также можно комбинировать для дополнительного покрытия.
Перейдите в командную строку Qt, перейдите в исходный каталог проекта и выполните следующие команды:
qmake -r
make clean
make distclean
1-й из них будет рекурсивно создавать make-файлы. Второй удалит все файлы, созданные при сборке проекта. 3-й снова удалит make-файлы. Затем продолжайте использовать теневую сборку из Qt Creator, как и раньше.
Проблема в том, что он оставит файлы, которые не являются частью проекта. Таким образом, если некоторые файлы были удалены из проекта, связанные с ними сгенерированные файлы могут остаться и вызвать проблемы, если файлы с тем же именем будут добавлены обратно. Поэтому даже после этого рекомендуется проверить, не осталось ли файлов ui_*
или moc_*
, если вы знаете, что удалили файлы из проекта.
Используйте программное обеспечение для управления версиями, чтобы сначала зафиксировать или спрятать / отложить все незафиксированные изменения, а затем удалить все неверсированные (также проигнорированные) файлы. Для некоторых программ контроля версий это может быть непросто, как git clean -dxf
(будьте осторожны, это также приведет к потере незафиксированных изменений и пользовательских настроек проекта Qt Creator), и в этом случае может быть проще просто удалить исходный каталог проекта и получить чистую проверку .
Проблема в том, что если некоторые сгенерированные файлы были случайно добавлены в проект, они не будут очищены с этим. Таким образом, все еще может быть хорошей идеей сделать шаг 1 выше.
Вышеуказанные шаги должны быть синхронизированы, так что после шага 1 любые файлы в исходном каталоге (кроме projectname.pro.user
и возможных *~
файлов резервных копий Qt Creators) должны находиться под контролем версий.